初始化项目,由ModelHub XC社区提供模型
Model: m3hrdadfi/wav2vec2-large-xlsr-persian-v3 Source: Original Platform
This commit is contained in:
17
.gitattributes
vendored
Normal file
17
.gitattributes
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
*.bin.* filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bin filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.h5 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tflite filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tar.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ot filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.onnx filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.arrow filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ftz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.joblib filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.model filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pb filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pth filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
||||||
236
README.md
Normal file
236
README.md
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
---
|
||||||
|
language: fa
|
||||||
|
datasets:
|
||||||
|
- common_voice
|
||||||
|
tags:
|
||||||
|
- audio
|
||||||
|
- automatic-speech-recognition
|
||||||
|
- speech
|
||||||
|
- xlsr-fine-tuning-week
|
||||||
|
widget:
|
||||||
|
- example_title: Common Voice sample 1
|
||||||
|
src: https://huggingface.co/m3hrdadfi/wav2vec2-large-xlsr-persian-v3/resolve/main/sample1.flac
|
||||||
|
- example_title: Common Voice sample 2978
|
||||||
|
src: https://huggingface.co/m3hrdadfi/wav2vec2-large-xlsr-persian-v3/resolve/main/sample2978.flac
|
||||||
|
- example_title: Common Voice sample 5168
|
||||||
|
src: https://huggingface.co/m3hrdadfi/wav2vec2-large-xlsr-persian-v3/resolve/main/sample5168.flac
|
||||||
|
model-index:
|
||||||
|
- name: XLSR Wav2Vec2 Persian (Farsi) V3 by Mehrdad Farahani
|
||||||
|
results:
|
||||||
|
- task:
|
||||||
|
name: Speech Recognition
|
||||||
|
type: automatic-speech-recognition
|
||||||
|
dataset:
|
||||||
|
name: Common Voice fa
|
||||||
|
type: common_voice
|
||||||
|
args: fa
|
||||||
|
metrics:
|
||||||
|
- name: Test WER
|
||||||
|
type: wer
|
||||||
|
value: 10.36
|
||||||
|
---
|
||||||
|
|
||||||
|
# Wav2Vec2-Large-XLSR-53-Persian V3
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
Fine-tuned [facebook/wav2vec2-large-xlsr-53](https://huggingface.co/facebook/wav2vec2-large-xlsr-53) in Persian (Farsi) using [Common Voice](https://huggingface.co/datasets/common_voice). When using this model, make sure that your speech input is sampled at 16kHz.
|
||||||
|
|
||||||
|
|
||||||
|
**Requirements**
|
||||||
|
```bash
|
||||||
|
# requirement packages
|
||||||
|
!pip install git+https://github.com/huggingface/datasets.git
|
||||||
|
!pip install git+https://github.com/huggingface/transformers.git
|
||||||
|
!pip install torchaudio
|
||||||
|
!pip install librosa
|
||||||
|
!pip install jiwer
|
||||||
|
!pip install parsivar
|
||||||
|
!pip install num2fawords
|
||||||
|
```
|
||||||
|
|
||||||
|
**Normalizer**
|
||||||
|
```bash
|
||||||
|
# Normalizer
|
||||||
|
!wget -O normalizer.py https://huggingface.co/m3hrdadfi/"wav2vec2-large-xlsr-persian-v3/raw/main/dictionary.py
|
||||||
|
!wget -O normalizer.py https://huggingface.co/m3hrdadfi/"wav2vec2-large-xlsr-persian-v3/raw/main/normalizer.py
|
||||||
|
```
|
||||||
|
|
||||||
|
**Downloading data**
|
||||||
|
```bash
|
||||||
|
wget https://voice-prod-bundler-ee1969a6ce8178826482b88e843c335139bd3fb4.s3.amazonaws.com/cv-corpus-6.1-2020-12-11/fa.tar.gz
|
||||||
|
|
||||||
|
tar -xzf fa.tar.gz
|
||||||
|
rm -rf fa.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
**Cleaning**
|
||||||
|
```python
|
||||||
|
from normalizer import normalizer
|
||||||
|
|
||||||
|
def cleaning(text):
|
||||||
|
if not isinstance(text, str):
|
||||||
|
return None
|
||||||
|
|
||||||
|
return normalizer({"sentence": text}, return_dict=False)
|
||||||
|
|
||||||
|
data_dir = "/content/cv-corpus-6.1-2020-12-11/fa"
|
||||||
|
|
||||||
|
test = pd.read_csv(f"{data_dir}/test.tsv", sep=" ")
|
||||||
|
test["path"] = data_dir + "/clips/" + test["path"]
|
||||||
|
print(f"Step 0: {len(test)}")
|
||||||
|
|
||||||
|
test["status"] = test["path"].apply(lambda path: True if os.path.exists(path) else None)
|
||||||
|
test = test.dropna(subset=["path"])
|
||||||
|
test = test.drop("status", 1)
|
||||||
|
print(f"Step 1: {len(test)}")
|
||||||
|
|
||||||
|
test["sentence"] = test["sentence"].apply(lambda t: cleaning(t))
|
||||||
|
test = test.dropna(subset=["sentence"])
|
||||||
|
print(f"Step 2: {len(test)}")
|
||||||
|
|
||||||
|
test = test.reset_index(drop=True)
|
||||||
|
print(test.head())
|
||||||
|
|
||||||
|
test = test[["path", "sentence"]]
|
||||||
|
test.to_csv("/content/test.csv", sep=" ", encoding="utf-8", index=False)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Prediction**
|
||||||
|
```python
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
import librosa
|
||||||
|
import torch
|
||||||
|
import torchaudio
|
||||||
|
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
|
||||||
|
from datasets import load_dataset, load_metric
|
||||||
|
|
||||||
|
import IPython.display as ipd
|
||||||
|
|
||||||
|
model_name_or_path = "m3hrdadfi/wav2vec2-large-xlsr-persian-v3"
|
||||||
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
||||||
|
print(model_name_or_path, device)
|
||||||
|
|
||||||
|
processor = Wav2Vec2Processor.from_pretrained(model_name_or_path)
|
||||||
|
model = Wav2Vec2ForCTC.from_pretrained(model_name_or_path).to(device)
|
||||||
|
|
||||||
|
|
||||||
|
def speech_file_to_array_fn(batch):
|
||||||
|
speech_array, sampling_rate = torchaudio.load(batch["path"])
|
||||||
|
speech_array = speech_array.squeeze().numpy()
|
||||||
|
speech_array = librosa.resample(np.asarray(speech_array), sampling_rate, processor.feature_extractor.sampling_rate)
|
||||||
|
|
||||||
|
batch["speech"] = speech_array
|
||||||
|
return batch
|
||||||
|
|
||||||
|
|
||||||
|
def predict(batch):
|
||||||
|
features = processor(
|
||||||
|
batch["speech"],
|
||||||
|
sampling_rate=processor.feature_extractor.sampling_rate,
|
||||||
|
return_tensors="pt",
|
||||||
|
padding=True
|
||||||
|
)
|
||||||
|
|
||||||
|
input_values = features.input_values.to(device)
|
||||||
|
attention_mask = features.attention_mask.to(device)
|
||||||
|
|
||||||
|
with torch.no_grad():
|
||||||
|
logits = model(input_values, attention_mask=attention_mask).logits
|
||||||
|
|
||||||
|
pred_ids = torch.argmax(logits, dim=-1)
|
||||||
|
|
||||||
|
batch["predicted"] = processor.batch_decode(pred_ids)
|
||||||
|
return batch
|
||||||
|
|
||||||
|
|
||||||
|
dataset = load_dataset("csv", data_files={"test": "/content/test.csv"}, delimiter=" ")["test"]
|
||||||
|
dataset = dataset.map(speech_file_to_array_fn)
|
||||||
|
result = dataset.map(predict, batched=True, batch_size=4)
|
||||||
|
```
|
||||||
|
|
||||||
|
**WER Score**
|
||||||
|
```python
|
||||||
|
wer = load_metric("wer")
|
||||||
|
print("WER: {:.2f}".format(100 * wer.compute(predictions=result["predicted"], references=result["sentence"])))
|
||||||
|
```
|
||||||
|
|
||||||
|
**Output**
|
||||||
|
```python
|
||||||
|
max_items = np.random.randint(0, len(result), 20).tolist()
|
||||||
|
for i in max_items:
|
||||||
|
reference, predicted = result["sentence"][i], result["predicted"][i]
|
||||||
|
print("reference:", reference)
|
||||||
|
print("predicted:", predicted)
|
||||||
|
print('---')
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
reference: ماجرا رو براش تعریف کردم اون گفت مریم اگه میدونی پسر خوبیه خب چه اشکالی داره باهاش بیشتر اشنا بشو
|
||||||
|
predicted: ماجرا رو براش تعریف کردم اون گفت مریم اگه میدونی پسر خوبیه خب چه اشکالی داره باهاش بیشتر اشنا بشو
|
||||||
|
---
|
||||||
|
reference: بیا پایین تو اجازه نداری بری اون بالا
|
||||||
|
predicted: بیا پایین تو اجازه نداری بری اون بالا
|
||||||
|
---
|
||||||
|
reference: هر روز یک دو مداد کش می رفتتم تااین که تا پایان ترم از تمامی دوستانم مداد برداشته بودم
|
||||||
|
predicted: هر روز یک دو مداد کش می رفتم تااین که تا پایین ترم از تمامی دوستان و مداد برداشته بودم
|
||||||
|
---
|
||||||
|
reference: فکر میکنی آروم میشینه
|
||||||
|
predicted: فکر میکنی آروم میشینه
|
||||||
|
---
|
||||||
|
reference: هرکسی با گوشی هوشمند خود میتواند با کایلا متصل گردد در یک محدوده مکانی
|
||||||
|
predicted: هرکسی با گوشی هوشمند خود میتواند با کایلا متصل گردد در یک محدوده مکانی
|
||||||
|
---
|
||||||
|
reference: برو از مهرداد بپرس
|
||||||
|
predicted: برو از مهرداد بپرس
|
||||||
|
---
|
||||||
|
reference: می خواهم شما را با این قدمها آشنا کنم
|
||||||
|
predicted: می خواهم شما را با این قدمها آشنا کنم
|
||||||
|
---
|
||||||
|
reference: میدونم یه روز دوباره می تونم تو رو ببینم
|
||||||
|
predicted: میدونم یه روز دوباره می تونم تو رو ببینم
|
||||||
|
---
|
||||||
|
reference: بسیار خوب خواهد بود دعوت او را بپذیری
|
||||||
|
predicted: بسیار خوب خواهد بود دعوت او را بپذیری
|
||||||
|
---
|
||||||
|
reference: بهت بگن آشغالی خوبه
|
||||||
|
predicted: بهت بگن آشغالی خوبه
|
||||||
|
---
|
||||||
|
reference: چرا معاشرت با هم ایمانان ما را محفوظ نگه میدارد
|
||||||
|
predicted: چرا معاشرت با هم ایمانان آ را م حفوظ نگه میدارد
|
||||||
|
---
|
||||||
|
reference: بولیوی پس از گویان فقیرترین کشور آمریکای جنوبی است
|
||||||
|
predicted: بولیوی پس از گویان فقیرترین کشور آمریکای جنوبی است
|
||||||
|
---
|
||||||
|
reference: بعد از مدتی اینکار برایم عادی شد
|
||||||
|
predicted: بعد از مدتی اینکار برایم عادو شد
|
||||||
|
---
|
||||||
|
reference: به نظر اون هم همینطوره
|
||||||
|
predicted: به نظر اون هم همینطوره
|
||||||
|
---
|
||||||
|
reference: هیچ مایونز ی دارید
|
||||||
|
predicted: هیچ مایونز ی دارید
|
||||||
|
---
|
||||||
|
reference: هیچ یک از انان کاری به سنگ نداشتند
|
||||||
|
predicted: هیچ شک از انان کاری به سنگ نداشتند
|
||||||
|
---
|
||||||
|
reference: می خواهم کمی کتاب شعر ببینم
|
||||||
|
predicted: می خواهم کتاب شعر ببینم
|
||||||
|
---
|
||||||
|
reference: همین شوهر فهیمه مگه نمی گفتی فرمانده بوده کو
|
||||||
|
predicted: همین شوهر فهیمه بینامی گفتی فهمانده بود کو
|
||||||
|
---
|
||||||
|
reference: اون جاها کسی رو نمیبینی که تو دستش کتاب نباشه
|
||||||
|
predicted: اون جاها کسی رو نمیبینی که تو دستش کتاب نباشه
|
||||||
|
---
|
||||||
|
reference: زندان رفتن من در این سالهای اخیر برام شانس بزرگی بود که معما و مشکل چندین سالهام را حل کرد
|
||||||
|
predicted: زندان رفتن من در این سالها اخی براب شانس بزرگی بود که معما و مشکل چندین سالهام را حل کرد
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
## Evaluation
|
||||||
|
|
||||||
|
**Test Result:**
|
||||||
|
- WER: 10.36%
|
||||||
76
config.json
Normal file
76
config.json
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"_name_or_path": "facebook/wav2vec2-large-xlsr-53",
|
||||||
|
"activation_dropout": 0.09216,
|
||||||
|
"apply_spec_augment": true,
|
||||||
|
"architectures": [
|
||||||
|
"Wav2Vec2ForCTC"
|
||||||
|
],
|
||||||
|
"attention_dropout": 0.05316,
|
||||||
|
"bos_token_id": 1,
|
||||||
|
"conv_bias": true,
|
||||||
|
"conv_dim": [
|
||||||
|
512,
|
||||||
|
512,
|
||||||
|
512,
|
||||||
|
512,
|
||||||
|
512,
|
||||||
|
512,
|
||||||
|
512
|
||||||
|
],
|
||||||
|
"conv_kernel": [
|
||||||
|
10,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"conv_stride": [
|
||||||
|
5,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"ctc_loss_reduction": "mean",
|
||||||
|
"ctc_zero_infinity": true,
|
||||||
|
"do_stable_layer_norm": true,
|
||||||
|
"eos_token_id": 2,
|
||||||
|
"feat_extract_activation": "gelu",
|
||||||
|
"feat_extract_dropout": 0.0,
|
||||||
|
"feat_extract_norm": "layer",
|
||||||
|
"feat_proj_dropout": 0.01249,
|
||||||
|
"final_dropout": 0.0,
|
||||||
|
"gradient_checkpointing": true,
|
||||||
|
"hidden_act": "gelu",
|
||||||
|
"hidden_dropout": 0.01941,
|
||||||
|
"hidden_size": 1024,
|
||||||
|
"initializer_range": 0.02,
|
||||||
|
"intermediate_size": 4096,
|
||||||
|
"layer_norm_eps": 1e-05,
|
||||||
|
"layerdrop": 0.01377,
|
||||||
|
"mask_channel_length": 10,
|
||||||
|
"mask_channel_min_space": 1,
|
||||||
|
"mask_channel_other": 0.0,
|
||||||
|
"mask_channel_prob": 0.0,
|
||||||
|
"mask_channel_selection": "static",
|
||||||
|
"mask_feature_length": 10,
|
||||||
|
"mask_feature_prob": 0.0,
|
||||||
|
"mask_time_length": 10,
|
||||||
|
"mask_time_min_space": 1,
|
||||||
|
"mask_time_other": 0.0,
|
||||||
|
"mask_time_prob": 0.04529,
|
||||||
|
"mask_time_selection": "static",
|
||||||
|
"model_type": "wav2vec2",
|
||||||
|
"num_attention_heads": 16,
|
||||||
|
"num_conv_pos_embedding_groups": 16,
|
||||||
|
"num_conv_pos_embeddings": 128,
|
||||||
|
"num_feat_extract_layers": 7,
|
||||||
|
"num_hidden_layers": 24,
|
||||||
|
"pad_token_id": 0,
|
||||||
|
"transformers_version": "4.6.0.dev0",
|
||||||
|
"vocab_size": 40
|
||||||
|
}
|
||||||
664
dictionary.py
Normal file
664
dictionary.py
Normal file
@@ -0,0 +1,664 @@
|
|||||||
|
dictionary_mapping = {
|
||||||
|
'ك': 'ک', 'دِ': 'د', 'بِ': 'ب', 'زِ': 'ز', 'ذِ': 'ذ', 'شِ': 'ش', 'سِ': 'س', 'ى': 'ی',
|
||||||
|
'ي': 'ی', 'أ': 'ا', 'ؤ': 'و', "ے": "ی", "ۀ": "ه", "ﭘ": "پ", "ﮐ": "ک", "ﯽ": "ی",
|
||||||
|
"ﺎ": "ا", "ﺑ": "ب", "ﺘ": "ت", "ﺧ": "خ", "ﺩ": "د", "ﺱ": "س", "ﻀ": "ض", "ﻌ": "ع",
|
||||||
|
"ﻟ": "ل", "ﻡ": "م", "ﻢ": "م", "ﻪ": "ه", "ﻮ": "و", 'ﺍ': "ا", 'ة': "ه",
|
||||||
|
'ﯾ': "ی", 'ﯿ': "ی", 'ﺒ': "ب", 'ﺖ': "ت", 'ﺪ': "د", 'ﺮ': "ر", 'ﺴ': "س", 'ﺷ': "ش",
|
||||||
|
'ﺸ': "ش", 'ﻋ': "ع", 'ﻤ': "م", 'ﻥ': "ن", 'ﻧ': "ن", 'ﻭ': "و", 'ﺭ': "ر", "ﮔ": "گ",
|
||||||
|
|
||||||
|
"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": "زد ",
|
||||||
|
"\u200c": " ", "\u200d": " ", "\u200e": " ", "\u200f": " ", "\ufeff": " ",
|
||||||
|
|
||||||
|
"نو آوریمان": "نوآوریمان",
|
||||||
|
"نو آوری مان": "نوآوریمان",
|
||||||
|
"نو آوریمان": "نوآوریمان",
|
||||||
|
" ا م ": "ام ",
|
||||||
|
" م ": "ام ",
|
||||||
|
"کنندهای": "کنندهای",
|
||||||
|
"ارائهای": "ارائهای",
|
||||||
|
"ایدهای": "ایدهای",
|
||||||
|
"ماسهای": "ماسهای",
|
||||||
|
"خامنهای": "خامنهای",
|
||||||
|
"قلهای": "قلهای",
|
||||||
|
"سیارهای": "سیارهای",
|
||||||
|
"کیسهای": "کیسهای",
|
||||||
|
"شانهای": "شانهای",
|
||||||
|
"غریبهای": "غریبهای",
|
||||||
|
"برنامهای": "برنامهای",
|
||||||
|
"سختگیرانهای": "سختگیرانهای",
|
||||||
|
"بهانهای": "بهانهای",
|
||||||
|
"زیرروالهای": "زیر روالهای",
|
||||||
|
"درهای": "درهای",
|
||||||
|
"آمادهای": "آمادهای",
|
||||||
|
"سادهای": "سادهای",
|
||||||
|
"سرمایهگذارهای": "سرمایه گذارهای",
|
||||||
|
"فوقالعادهای": "فوقالعادهای",
|
||||||
|
"حادثهای": "حادثهای",
|
||||||
|
"نویسندههای": "نویسندههای",
|
||||||
|
"علاقهای": "علاقهای",
|
||||||
|
"برجستهای": "برجستهای",
|
||||||
|
"جلگهای": "جلگهای",
|
||||||
|
"زندهای": "زندهای",
|
||||||
|
"فنآوریهای": "فناوریهای",
|
||||||
|
"سایهروشنهای": "سایه روشنهای",
|
||||||
|
"بیسابقهای": "بی سابقهای",
|
||||||
|
"فرضیهای": "فرضیهای",
|
||||||
|
"راهاندازهای": "راه اندازهای",
|
||||||
|
"بیشهای": "بیشهای",
|
||||||
|
"مقالهای": "مقالهای",
|
||||||
|
"دیگهای": "دیگهای",
|
||||||
|
"ماههاست": "ماه هاست",
|
||||||
|
"نرمافزارهای": "نرمافزارهای",
|
||||||
|
"کتابسوزانهای": "کتاب سوزانهای",
|
||||||
|
"سیستمعاملهای": "سیستم عاملهای",
|
||||||
|
"اسلحهای": "اسلحهای",
|
||||||
|
"وقفهای": "وقفهای",
|
||||||
|
"زمینهای": "زمینهای",
|
||||||
|
"حرامزادههای": "حرامزادههای",
|
||||||
|
"هزینهای": "هزینهای",
|
||||||
|
"انداختهای": "انداختهای",
|
||||||
|
"جسورانهای": "جسورانهای",
|
||||||
|
"فاجعهای": "فاجعهای",
|
||||||
|
"جامعهای": "جامعهای",
|
||||||
|
"پدیدهای": "پدیدهای",
|
||||||
|
"اغواگرانهای": "اغواگرانهای",
|
||||||
|
"تکانهای": "تکانهای",
|
||||||
|
"لولهای": "لولهای",
|
||||||
|
"نشانهای": "نشانهای",
|
||||||
|
"وسیلهای": "وسیلهای",
|
||||||
|
"آیندهای": "آیندهای",
|
||||||
|
"بردهای": "بردهای",
|
||||||
|
"سابقهای": "سابقهای",
|
||||||
|
"ناحیهای": "ناحیهای",
|
||||||
|
"تکاندهندهای": "تکان دهندهای",
|
||||||
|
"بودجهای": "بودجهای",
|
||||||
|
"روزانهای": "روزانهای",
|
||||||
|
"چارهای": "چارهای",
|
||||||
|
"انگیزهای": "انگیزهای",
|
||||||
|
"دادهای": "دادهای",
|
||||||
|
"عدهای": "عدهای",
|
||||||
|
"هفتهای": "هفتهای",
|
||||||
|
"منطقهای": "منطقهای",
|
||||||
|
"استارتآپهای": "استارتاپهای",
|
||||||
|
"سازهای": "سازهای",
|
||||||
|
"مجموعهای": "مجموعهای",
|
||||||
|
"فلسفهای": "فلسفهای",
|
||||||
|
"تذکردهندهای": "تذکر دهندهای",
|
||||||
|
"مصاحبهای": "مصابحهای",
|
||||||
|
"نمونهای": "نمونهای",
|
||||||
|
"قلمموهای": "قلم موهای",
|
||||||
|
"شبزندهداری": "شب زندهداری",
|
||||||
|
"خوردهباشد": "خورده باشد",
|
||||||
|
"داشتهباشید": "داشته باشید",
|
||||||
|
"فزایندهای": "فزایندهای",
|
||||||
|
"عمدهای": "عمدهای",
|
||||||
|
"بدیهایی": "بدیهای",
|
||||||
|
"نوشتهایم": "نوشتهایم",
|
||||||
|
"بنتالهدی": "بنت الهدی",
|
||||||
|
"نوشتهام": "نوشتهام",
|
||||||
|
"سرمایهگذاران": "سرمایه گذاران",
|
||||||
|
"خانهی": "خانهی",
|
||||||
|
"گستاخانهی": "گستاخانهی",
|
||||||
|
"گرفتهباشیم": "گرفته باشیم",
|
||||||
|
"خونهی": "خونهی",
|
||||||
|
"داشتهام": "داشتهام",
|
||||||
|
"رشتهام": "رشتهام",
|
||||||
|
"سرمایهگذارانشان": "سرمایه گذارانشان",
|
||||||
|
"ریشهکنی": "ریشهکنی",
|
||||||
|
"مودبانهتری": "مودبانهتری",
|
||||||
|
"برگردانشدهاند": "برگردان شدهاند",
|
||||||
|
"قرمهسبزی": "قرمهسبزی",
|
||||||
|
"راهجویی": "راه جویی",
|
||||||
|
"اماهیچوقت": "اما هیچوقت",
|
||||||
|
"آبوهوای": "آب و هوای",
|
||||||
|
"بقیهاش": "بقیهاش",
|
||||||
|
"طبقهبندی": "طبقهبندی",
|
||||||
|
"مردههان": "مرده هان",
|
||||||
|
"آمادهاند": "آمادهاند",
|
||||||
|
"نشدهاید": "نشدهاید",
|
||||||
|
"آگاهیرسانی": "آگاهی رسانی",
|
||||||
|
"نداشتهاند": "نداشتهاند",
|
||||||
|
"شکنانهترین": "شکنانهترین",
|
||||||
|
"اقدامهایی": "اقدامهایی",
|
||||||
|
"راهآهن": "راه آهن",
|
||||||
|
"شدهاند": "شدهاند",
|
||||||
|
"تازهترین": "تازهترین",
|
||||||
|
"روبهروی": "رو به روی",
|
||||||
|
"منحصربهفرد": "منحصر به فرد",
|
||||||
|
"سیزدهبدر": "سیزده بدر",
|
||||||
|
"برندهی": "برندهی",
|
||||||
|
"خانهاشتراکی": "خانه اشتراکی",
|
||||||
|
"دادههایی": "دادههایی",
|
||||||
|
"استفادهتر": "استفادهتر",
|
||||||
|
"گذرنامهتان": "گذرنامهتان",
|
||||||
|
"کهنترین": "کهنهترین",
|
||||||
|
"فرهنگسرا": "فرهنگسرا",
|
||||||
|
"آمادهاید": "آمادهاید",
|
||||||
|
"ویژهی": "ویژهی",
|
||||||
|
"غریزهات": "غریزهات",
|
||||||
|
"مادرشوهری": "مادر شوهری",
|
||||||
|
"نبودهام": "نبودهام",
|
||||||
|
"بودهاند": "بودهاند",
|
||||||
|
"وتنها": "و تنها",
|
||||||
|
"بداههکاری": "بداههکاری",
|
||||||
|
"سرمایهگذار": "سرمایه گذار",
|
||||||
|
"برنامهنویس": "برنامه نویس",
|
||||||
|
"مهنازخانم": "مهناز خانم",
|
||||||
|
"مواجهاند": "مواجهاند",
|
||||||
|
"توسعهاش": "توسعهاش",
|
||||||
|
"سینهام": "سینهام",
|
||||||
|
"سینهام": "سینهام",
|
||||||
|
"نمیخواهند": "نمیخواهند",
|
||||||
|
"فنآوریها": "فناوریها",
|
||||||
|
"دنبالهرو": "دنبالهرو",
|
||||||
|
"لبهی": "لبهی",
|
||||||
|
"اللهیار": "الله یار",
|
||||||
|
"ارزندهتر": "ارزندهتر",
|
||||||
|
"برههای": "برهای",
|
||||||
|
"پیادهسازی": "پیادهسازی",
|
||||||
|
"دهسالگی": "ده سالگی",
|
||||||
|
"رسانهای": "رسانهای",
|
||||||
|
"ریشسفیدها": "ریش سفیدها",
|
||||||
|
"چهجوری": "چه جوری",
|
||||||
|
"ویژگیهایی": "ویژگیهایی",
|
||||||
|
"میفهمیم": "میفهمیم",
|
||||||
|
"وبهم": "و بهم",
|
||||||
|
"قطرهای": "قطرهای",
|
||||||
|
"ازتنهایی": "از تنهایی",
|
||||||
|
"لطیفهای": "لطیفهای",
|
||||||
|
"باشهاومدم": "باشه اومدم",
|
||||||
|
"منحصربهفردترین": "منحصر به فردترین",
|
||||||
|
"کردهاند": "کردهاند",
|
||||||
|
"اندازهای": "اندازهای",
|
||||||
|
"بهرهبرداری": "بهره برداری",
|
||||||
|
"اماشوهرجان": "اما شوهر جان",
|
||||||
|
"خانوادهاش": "خانوادهاش",
|
||||||
|
"نشدهاند": "نشدهاند",
|
||||||
|
"نکردهایم": "نکردهایم",
|
||||||
|
"تخممرغهایش": "تخم مرغهایش",
|
||||||
|
"وظیفهش": "وظیفهاش",
|
||||||
|
"مشگینشهر": "مشگی شهر",
|
||||||
|
"توسعهدهندگانش": "توسعه دهندگانش",
|
||||||
|
"امینابراهیم": "امین ابراهیم",
|
||||||
|
"دربارهاش": "دربارهاش",
|
||||||
|
"میانافزارها": "میانافزارها",
|
||||||
|
"دیدهاند": "دیدهاند",
|
||||||
|
"خانوادهام": "خانوادهام",
|
||||||
|
"مایهی": "مایهی",
|
||||||
|
"نوشتهشدن": "نوشته شدن",
|
||||||
|
"راهحلهایشان": "راه حلهایشان",
|
||||||
|
"میهماننواز": "میهمان نواز",
|
||||||
|
"زیبندهی": "زیرندهی",
|
||||||
|
"راههایی": "راههایی",
|
||||||
|
"جربزهی": "جربزهی",
|
||||||
|
"بهجا": " به جا",
|
||||||
|
"بطورهمزمان": "به طور همزمان",
|
||||||
|
"فهمیدهبود": "فهمیده بود",
|
||||||
|
"دوربرگردانها": "دور برگردانها",
|
||||||
|
"شالودهی": "شالودهی",
|
||||||
|
"راهکاریی": "راهکاری",
|
||||||
|
"مخالفتهایی": "مخالفتهایی",
|
||||||
|
"چیزهاازشون": "چیزها ازشون",
|
||||||
|
"سکونتگاههای": "سکونت گاههای",
|
||||||
|
"سالهابود": "سالها بود",
|
||||||
|
"نمونهی": "نمونهی",
|
||||||
|
"سرمایهگذاری": "سرمایه گذاری",
|
||||||
|
"شبکهای": "شبکهای",
|
||||||
|
"خواهرشوهر": "خواهر شوهر",
|
||||||
|
"سرگیجهآور": "سرگیجه آور",
|
||||||
|
"آستانهی": "آستانهی",
|
||||||
|
"دادهاست": "داده است",
|
||||||
|
"مجسمهسازی": "مجسمه سازی",
|
||||||
|
"ماهرانهترین": "ماهرانهترین",
|
||||||
|
"پنجشنبههایی": "پنجشنبه شبهایی",
|
||||||
|
"نرفنهام": "نرفتهام",
|
||||||
|
"قورمهسبزی": "قورمه سبزی",
|
||||||
|
"گذارهای": "گذارهای",
|
||||||
|
"بندهخدا": "بنده خدا",
|
||||||
|
"روزنامهنگاران": "روزنامه نگاران",
|
||||||
|
"نقشهی": "نقشهی",
|
||||||
|
"حملهی": "حملهی",
|
||||||
|
"تکنیکهاست": "تکنیک هاست",
|
||||||
|
"نرمافزارهایمان": "نرمافرارهایمان",
|
||||||
|
"مادرشوهرم": "مادر شوهرم",
|
||||||
|
"ماهگیمون": "ماه گیمون",
|
||||||
|
"مادرشوهرمحترم": "مادر شوهر محترم",
|
||||||
|
"شوهرداری": "شوهر داری",
|
||||||
|
"سرمایهگذارها": "سرمایه گذارها",
|
||||||
|
"بهرهمند": "بهرهمند",
|
||||||
|
"درمانهایی": "درمانهایی",
|
||||||
|
"عامدانهتر": "عامدانهتر",
|
||||||
|
"تازهوارد": "تازه وارد",
|
||||||
|
"مونتهویدئو": "مونته ویدئو",
|
||||||
|
"ذائقهاش": "ذائقهاش",
|
||||||
|
"گوشهگیرتر": "گوشهگیرتر",
|
||||||
|
"دنبالهدار": "دنبالهدار",
|
||||||
|
"بیخانمانها": "بیخانمانها",
|
||||||
|
"سرمایهدارها": "سرمایهدارها",
|
||||||
|
"مادرشوهریم": "مادر شوهریم",
|
||||||
|
"صبحانهاش": "صبحانهاش",
|
||||||
|
"جنازهست": "جنازه است",
|
||||||
|
"شمارهات": "شمارهای",
|
||||||
|
"بهقدری": "به قدری",
|
||||||
|
"کیسهی": "کیسهی",
|
||||||
|
"کوششهایی": "کوششهایی",
|
||||||
|
"مادرشوهر": "مادر شوهر",
|
||||||
|
"رابطهی": "رابطهی",
|
||||||
|
"نوشتهاند": "نوشتهاند",
|
||||||
|
"کنجکاوانهی": "کنجکاوانهی",
|
||||||
|
"غیرمتعهد": "غیر متعهد",
|
||||||
|
"کردهای": "کردهای",
|
||||||
|
"وهمکارانم": "و همکارانم",
|
||||||
|
"گردهمآیی": "گردهمایی",
|
||||||
|
"اللهوردی": "الله وردی",
|
||||||
|
"صرفهجویی": "صرفه جویی",
|
||||||
|
"ماندهاند": "ماندهاند",
|
||||||
|
"برنامهنویسی": "برنامهنویسی",
|
||||||
|
"امینمهدی": "امین مهدی",
|
||||||
|
"سهامدارنی": "سهام دارانی",
|
||||||
|
"مسابقهی": "مسابقهی",
|
||||||
|
"ستارهشناسم": "ستار شناسم",
|
||||||
|
"گرفتهاند": "گرفتهاند",
|
||||||
|
"جامعهشان": "جامعهشان",
|
||||||
|
"بچهی": "بچهی",
|
||||||
|
"شیوهی": "شیوهی",
|
||||||
|
"بهکار": "به کار",
|
||||||
|
"بهتراست": "بهتر است",
|
||||||
|
"سروکلهشون": "سر و کلهشون",
|
||||||
|
"رسیدهمسرش": "رسید همسرش",
|
||||||
|
"پسراهل": "پسر اهل",
|
||||||
|
"پروژههای": "پروژههای",
|
||||||
|
"عاقلانهام": "عاقلانهام",
|
||||||
|
"گذاشتهاند": "گذاشتهاند",
|
||||||
|
"کردهام": "کردهام",
|
||||||
|
"اندازهگیری": "اندازه گیری",
|
||||||
|
"یاوهگویی": "یاوه گویی",
|
||||||
|
"سازمانهایی": "سازمانهایی",
|
||||||
|
"نمودهاند": "نمودهاند",
|
||||||
|
"تنهاییآور": "تنهایی آور",
|
||||||
|
"قراردهیم": "قرار دهیم",
|
||||||
|
"ازشوهرجان": "از شوهر جان",
|
||||||
|
"کرهجنوبی": "کره جنوبی",
|
||||||
|
"توهینآمیز": "توهین آمیز",
|
||||||
|
"فنآوریهایی": "فناوریهایی",
|
||||||
|
"داشتهاید": "داشتهاید",
|
||||||
|
"شدهایم": "شدهایم",
|
||||||
|
"نمیفهمم": "نمیفهمم",
|
||||||
|
"مثالهایی": "مثالهایی",
|
||||||
|
"رییسجمهور": "رییس جمهور",
|
||||||
|
"مجموعهی": "مجموعهی",
|
||||||
|
"درندهاند": "درندهاند",
|
||||||
|
"امابهش": "اما بهش",
|
||||||
|
"بازخواهند": "باز خواهند",
|
||||||
|
"برنامههایی": "برنامههایی",
|
||||||
|
"یهجا": "یه جا",
|
||||||
|
"زگیلهایی": "زگیلهایی",
|
||||||
|
"وسیلهی": "وسیلهی",
|
||||||
|
"بهمنیار": "بهمن یار",
|
||||||
|
"دادهام": "دادهام",
|
||||||
|
"بههنگام": "به هنگام",
|
||||||
|
"بهدروغ": "به دروغ",
|
||||||
|
"دورافتادهترین": "دور افتادهترین",
|
||||||
|
"نامهایی": "نامهایی",
|
||||||
|
"سهقسمتی": "سه قسمتی",
|
||||||
|
"توجهازچیدن": "توجه از چیدن",
|
||||||
|
"پیامرسانها": "پیام رسانها",
|
||||||
|
"بهمنزاد": "بهمن زاد",
|
||||||
|
"نشانههایی": "نشانههایی",
|
||||||
|
"راهحلهای": "راه حلهای",
|
||||||
|
"راهحلهایی": "راه حلهایی",
|
||||||
|
"راهحلهای": "راه حلهای",
|
||||||
|
"نظرخواهیها": "نظر خواهیها",
|
||||||
|
"نظرخواهیها": "نظر خواهیها",
|
||||||
|
"کندهی": "کندهی",
|
||||||
|
"حرامزادههای": "حرام زادههای",
|
||||||
|
"شبیهسازیهایی": "شبیه سازیهایی",
|
||||||
|
"مهارتهایی": "مهارتهایی",
|
||||||
|
"روبهرویشان": "رو به رویشان",
|
||||||
|
"برجستهترین": "برجستهترین",
|
||||||
|
"نمیفهمیدم": "نمیفهمیدم",
|
||||||
|
"دستگاههایی": "دستگاههایی",
|
||||||
|
"برادرشوهر": "برادر شوهر",
|
||||||
|
"گرسنهام": "گرستهام",
|
||||||
|
"گرسنههام": "گرستهام",
|
||||||
|
"قهوهخوری": "قهوه خوری",
|
||||||
|
"دادهاید": "دادهاید",
|
||||||
|
"بهآرامی": "به آرمانی",
|
||||||
|
"دانستنیهاست": "دانستنیهاست",
|
||||||
|
"بهراحتی": "به راحتی",
|
||||||
|
"ایدهپردازی": "ایدهپردازی",
|
||||||
|
"ریشسفیدهای": "ریش سفیدهای",
|
||||||
|
"خفهمون": "خفه مون",
|
||||||
|
"بهجای": "به جای",
|
||||||
|
"ریزخشونتها": "ریز خشونتها",
|
||||||
|
"ریزخشونتها": "ریز خشونتها",
|
||||||
|
"حساسیتهایی": "حساسیتهایی",
|
||||||
|
"پشتصحنهی": "پشت صحنهی",
|
||||||
|
"کلهی": "کلهی",
|
||||||
|
"تاشوهرم": "تا شوهرم",
|
||||||
|
"آیندهاش": "آیندهاش",
|
||||||
|
"پروانههایی": "پروانههایی",
|
||||||
|
"خوبیهایی": "خوبیهایی",
|
||||||
|
"نرمافزارها": "نرمافزارها",
|
||||||
|
"رساندهاند": "رساندهاند",
|
||||||
|
"سرمایهگذارنی": "سرمایه گذارانی",
|
||||||
|
"تکهچسبانی": "تکه چسبانی",
|
||||||
|
"بیتوجهی": "بی توجهی",
|
||||||
|
"جاهطلبی": "جاه طلبی",
|
||||||
|
"پرغلغلهتان": "پر غلغلهتان",
|
||||||
|
"خمینیشهر": "خمینی شهر",
|
||||||
|
"رشتهتوییت": "رشته توییت",
|
||||||
|
"موهبتهایی": "موهبتهایی",
|
||||||
|
"برنامهی": "برنامهی",
|
||||||
|
"مادرشوهردارم": "مادر شوهر داردم",
|
||||||
|
"سیاهپوستان": "سیاه پوستان",
|
||||||
|
"شرکتهایی": "شرکتهایی",
|
||||||
|
"نیاوردهاند": "نیاوردهاند",
|
||||||
|
"آنهم": "آن هم",
|
||||||
|
"شوهرداریم": "شوهر داریم",
|
||||||
|
"یکچهارم": "یک چهارم",
|
||||||
|
"پروندههاست": "پرونده هاست",
|
||||||
|
"برنامهت": "برنامهات",
|
||||||
|
"چروکیدهمان": "چروکیدهمان",
|
||||||
|
"زمینهسازی": "زمینه سازی",
|
||||||
|
"زدهاند": "زدهاند",
|
||||||
|
"اظهارنظرپرداختن": "اظهار نظر پرداختن",
|
||||||
|
"صلحطلبانهترین": "صلح طلبانهترین",
|
||||||
|
"بهغلط": "به غلط",
|
||||||
|
"ایدهآلم": "ایده آلم",
|
||||||
|
"سیاهکاران": "سیاه کاران",
|
||||||
|
"امیرابراهیم": "امیر ابراهیم",
|
||||||
|
"توسعهدهندگان": "توسعه دهندگان",
|
||||||
|
"لحظهی": "لحظهی",
|
||||||
|
"امینطاها": "امین طاها",
|
||||||
|
"بینالنهرین": "بین النهرین",
|
||||||
|
"نیمهوقت": "نیمه وقت",
|
||||||
|
"پیادهروی": "پیاده روی",
|
||||||
|
"آلودهاند": "آلودهاند",
|
||||||
|
"گریهکرد": "گره کرد",
|
||||||
|
"نعمتهایی": "نعمتهایی",
|
||||||
|
"مادرشوهرشماهم": "مادر شوهر شما هم",
|
||||||
|
"آشپزخونهاس": "آشپزخونهاس",
|
||||||
|
"مسابقهها": "مسابقهها",
|
||||||
|
"مسابقهای": "مسابقههای",
|
||||||
|
"برنامهریزی": "برنامهریزی",
|
||||||
|
"بازخواهید": "باز خواهید",
|
||||||
|
"جوییما": "جویی ما",
|
||||||
|
"آماده ایم": "آمادهایم",
|
||||||
|
"مدلسازی": "مدلسازی",
|
||||||
|
"درصورتیکه": "در صورتیکه",
|
||||||
|
"آمریکاییات": "آمریکاییات",
|
||||||
|
"مادریاش": "مادریاش",
|
||||||
|
"غافلگیرکننده": "غافلگیر کننده",
|
||||||
|
"پیکرتراشی": "پیکر تراشی",
|
||||||
|
"اذیتوآزار": "اذیت و آزار",
|
||||||
|
"امتیازاورترین": "امتیاز آور",
|
||||||
|
"جیکجیک": "جیک جیک",
|
||||||
|
"تاشب": "تا شب",
|
||||||
|
"کپیرایت": "کپی رایت",
|
||||||
|
"آنتیبادی": "آنتی بادی",
|
||||||
|
"عجیبتر": "عجیبتر",
|
||||||
|
"استانداردسازی": "استاندارد سازی",
|
||||||
|
"هشتادوهشت": "هشتاد و هشت",
|
||||||
|
"متنوعتر": "متنوعتر",
|
||||||
|
"منظورانجام": "منظور انجام",
|
||||||
|
"نگرانکنندهترین": "نگران کنندهترین",
|
||||||
|
"شگفتانگیز": "شگفت انگیز",
|
||||||
|
"رنگینپوست": "رنگین پوست",
|
||||||
|
"فارغ التحصیلان": "فارغالتحصیلان",
|
||||||
|
"ترسناکتر": "ترسناکتر",
|
||||||
|
"لا رامبلا": "لارامبلا",
|
||||||
|
"پرجمعیتترین": "پرجمعیتترین",
|
||||||
|
"درمیآیند": "درمیآیند",
|
||||||
|
"باشمالکی": "باشم الکی",
|
||||||
|
"وسیعتر": "وسیعتر",
|
||||||
|
"فاحشهخانه": "فاحشه خانه",
|
||||||
|
"بااحتیاط": "با احتیاط",
|
||||||
|
"قانعکننده": "قانعکننده",
|
||||||
|
"انعطافپذیری": "انعطافپذیری",
|
||||||
|
"بیتالمقدس": "بیتالمقدس",
|
||||||
|
"اوپناستریتمپ": "اوپن استریت مپ",
|
||||||
|
"روزابارونی": "روزا بارونی",
|
||||||
|
"محافظهکارانه": "محافظه کارانه",
|
||||||
|
"فوتبالدستی": "فوتبال دستی",
|
||||||
|
"توسعهدهنده": "توسعه دهنده",
|
||||||
|
"قانونگزاران": "قانون گزاران",
|
||||||
|
"العسریسرا": "العسر یسرا",
|
||||||
|
"خارقالعاده": "خارقالعاده",
|
||||||
|
"بیماریمزمن": "بیماری مزمن",
|
||||||
|
"بادوستانتان": "با دوستانتان",
|
||||||
|
"برابربیشتر": "برابر بیشتر",
|
||||||
|
"ارائهدهنده": "ارائه دهنده",
|
||||||
|
"طوفانزدگان": "طوفان زندگان",
|
||||||
|
"امینمحمد": "امین محمد",
|
||||||
|
"محیطزیست": "محیط زیست",
|
||||||
|
"شقیترینشان": "شقیترینشان",
|
||||||
|
"بودواقعا": "بود واقعا",
|
||||||
|
"نیویورکتایمز": "نیویورک تایمز",
|
||||||
|
"ریودوژانیرو": "ریو دو ژانیرو",
|
||||||
|
"مشترکالمنافع": "مشترکالمنافع",
|
||||||
|
"اسلایدسازم": "اسلاید سازم",
|
||||||
|
"نمیآوریدش": "نمیآوریدش",
|
||||||
|
"بینالملل": "بینالملل",
|
||||||
|
"مصرفکنندگان": "مصرف کنندگان",
|
||||||
|
"امینالدین": "امین الدین",
|
||||||
|
"امریکااینقدر": "امریکا اینقدر",
|
||||||
|
"بعضیاوقات": "بعضی اوقات",
|
||||||
|
"خاطربچه": "خاطر بچه",
|
||||||
|
"ایناکیلویی": "اینا کیلویی",
|
||||||
|
"ویکیپدیا": "ویکیپدیا",
|
||||||
|
"مافکرمیکنیم": "ما فکر میکنیم",
|
||||||
|
"انگلیسیزبان": "انگلیسی زبان",
|
||||||
|
"کلهشون": "کلهشون",
|
||||||
|
"آدمبزرگی": "آرم بزرگی",
|
||||||
|
"مر آت مر آه": "مرآت مرآت",
|
||||||
|
"آسیبزد": "آسیب زد",
|
||||||
|
"آیآرسی": "آی آرسی",
|
||||||
|
"آسیااقیانوسیه": "آسیا اقیانوسیه",
|
||||||
|
"آیای": "آیا",
|
||||||
|
"میانجنسی": "میان جنسی",
|
||||||
|
"میاننسلی": "میان نسلی",
|
||||||
|
"میانافزارها": "میان افزارها",
|
||||||
|
"آییننامه": "آییننامه",
|
||||||
|
"ارائهشده": "ارائهشده",
|
||||||
|
"اشپزخونه": "آشپزخونه",
|
||||||
|
"اماعلتشونمیپرسه": "اما علتشو نمیپرسه",
|
||||||
|
"امیدوارکننده": "امیدوار کننده",
|
||||||
|
"ایالاتمتحده": "ایالات متحده",
|
||||||
|
"بااینکه": "با اینکه",
|
||||||
|
"بلندپروازانه": "بلند پروازانه",
|
||||||
|
"بهترازاینه": "بهتر از اینه",
|
||||||
|
"بهدستآمده": "به دستآمده",
|
||||||
|
"بهوسیله": "به وسیله",
|
||||||
|
"بیادبانه": "بی ادبانه",
|
||||||
|
"بیاندازه": "بی اندازه",
|
||||||
|
"بیصبرانه": "بی صبرانه",
|
||||||
|
"بیفایده": "بی فایده",
|
||||||
|
"بیمهره": "بی مهره",
|
||||||
|
"بینظیره": "بی نظیره",
|
||||||
|
"تاریخزده": "تاریخ زده",
|
||||||
|
"تهرانزده": "تهران زده",
|
||||||
|
"تولیدشده": "تولید شده",
|
||||||
|
"تولیدکننده": "تولید کننده",
|
||||||
|
"تکمیلشده": "تکمیل شده",
|
||||||
|
"جاافتاده": "جا افتاده",
|
||||||
|
"جمعآوریکننده": "جمع آوری کننده",
|
||||||
|
"جورآدمیه": "جور آدمیه",
|
||||||
|
"حقالزحمه": "حق الزحمه",
|
||||||
|
"دخترونهتره": "دخترونه تره",
|
||||||
|
"دوپنجره": "دو پنجره",
|
||||||
|
"ذاتالریه": "ذاتالریه",
|
||||||
|
"راسالخیمه": "راسالخیمه",
|
||||||
|
"رنگماده": "رنگ ماده",
|
||||||
|
"سوئاستفاده": "سو استفاده",
|
||||||
|
"سواستفاده": "سو استفاده",
|
||||||
|
"شبهجزیره": "شبه جزیره",
|
||||||
|
"صادرکننده": "صادر کننده",
|
||||||
|
"ضررداره": "ضرر داره",
|
||||||
|
"عابرپیاده": "عابر پیاده",
|
||||||
|
"فوقالعاده": "فوقالعاده",
|
||||||
|
"قابلتوجه": "قابل توجه",
|
||||||
|
"قانعکننده": "قانع کننده",
|
||||||
|
"مادربیچاره": "مادر بیچاره",
|
||||||
|
"مشخصشده": "مشخص شده",
|
||||||
|
"مصرفکننده": "مصرف کننده",
|
||||||
|
"مصیبتزده": "مصیب تزده",
|
||||||
|
"ناامیدکننده": "ناامید کننده",
|
||||||
|
"نیمفاصله": "نیمفاصله",
|
||||||
|
"هماهنگکننده": "هماهنگ کننده",
|
||||||
|
"همهجانبه": "همه جانبه",
|
||||||
|
"واردکننده": "وارد کننده",
|
||||||
|
"وخوابگاه": "و خوابگاه",
|
||||||
|
"ودستگاه": "و دستگاه",
|
||||||
|
"وزردچوبه": "و زردچوبه",
|
||||||
|
"وپروانه": "و پروانه",
|
||||||
|
"پدرخوانده": "پدر خوانده",
|
||||||
|
"چاپشده": "چاپ شده",
|
||||||
|
"کردته": "کرد ته",
|
||||||
|
"کردندکه": "کردند که",
|
||||||
|
"یکطرفه": "یک طرفه",
|
||||||
|
"پایینتره": "پایینتره",
|
||||||
|
"اشتراکگذاری": "اشتراک گذاری",
|
||||||
|
"انحصارگراناند": "انحصار گراناند",
|
||||||
|
"خوشحالییییی": "خوشحالی",
|
||||||
|
"همتیمیهایشان": "هم تیمیهایشان",
|
||||||
|
"پایدارامباید": "پایدارام باید",
|
||||||
|
"پرجنبوجوشتر": "پر جنب و جوشتر",
|
||||||
|
"آبمروارید": "آب مروارید",
|
||||||
|
"آتشسوزی": "آتش سوزی",
|
||||||
|
"آتشنشانی": "آتشنشانی",
|
||||||
|
"آتشنشان": "آتشنشان",
|
||||||
|
"آرامشبخش": "آرامش بخش",
|
||||||
|
"آشناداشتن": "آشنا داشتن",
|
||||||
|
"آقاچیزی": "آقا چیزی",
|
||||||
|
"آموختهام": "آموختهام",
|
||||||
|
"آموزششان": "آموزششان",
|
||||||
|
"ازآنجا": "از آنجا",
|
||||||
|
"ازالان": "از الان",
|
||||||
|
"ازاینجا": "از اینجا",
|
||||||
|
"ازجیبش": "از جیبش",
|
||||||
|
"ازدستش": "از دستش",
|
||||||
|
"ازدیوار": "از دیوار",
|
||||||
|
"ازشغلشون": "از شغلشون",
|
||||||
|
"ازوقتی": "از وقتی",
|
||||||
|
"ازکسانی": "از کسانی",
|
||||||
|
"اسباببازی": "اسباب بازی",
|
||||||
|
"اسبسوار": "اسب سوار",
|
||||||
|
"اصیلزاده": "اصیل زاده",
|
||||||
|
"افتادهاید": "افتادهاید",
|
||||||
|
"الهام": "الهام",
|
||||||
|
"امااصلا": "اما اصلا",
|
||||||
|
"امااصلابه": "اما اصلا به",
|
||||||
|
"امااین": "اما این",
|
||||||
|
"امابعد": "اما بعد",
|
||||||
|
"امابعدیکی": "اما بعد یکی",
|
||||||
|
"اماجاذبه": "اما جاذبه",
|
||||||
|
"امرارمعاش": "امرار معاش",
|
||||||
|
"امکانپذیر": "امکان پذیر",
|
||||||
|
"انتهای": "انتهای",
|
||||||
|
"انتهایی": "انتهایی",
|
||||||
|
"ایزدبانوی": "ایزد بانوی",
|
||||||
|
"بااینحال": "با اینحال",
|
||||||
|
"باحتمال": "به احتمال",
|
||||||
|
"باحجاب": "با حجاب",
|
||||||
|
"باخنده": "با خنده",
|
||||||
|
"بادوستاش": "با دوستاش",
|
||||||
|
"بارمان": "بار مان",
|
||||||
|
"بازتر": "باز تر",
|
||||||
|
"باطعنه": "با طعنه",
|
||||||
|
"بافریاد": "با فریاد",
|
||||||
|
"بارگزاری": "بارگذاری",
|
||||||
|
"بالامنم": "بالا منم",
|
||||||
|
"بگیرمامان": "بگیر مامان",
|
||||||
|
"بیاحترامی": "بی احترامی",
|
||||||
|
"بیادبی": "بی ادبی",
|
||||||
|
"بیاعتنا": "بی اعتنا",
|
||||||
|
"بیدارباش": "بیدار باش",
|
||||||
|
"بیشازحد": "بیش از حد",
|
||||||
|
"بیمسئولیت": "بی مسئولیت",
|
||||||
|
"تاسفبار": "تاسف بار",
|
||||||
|
"تامشکلمون": "تا مشکلمون",
|
||||||
|
"تانقشه": "تا نقشه",
|
||||||
|
"تصمیمگیری": "تصمیم گیری",
|
||||||
|
"تقسیمبندی": "تقسیم بندی",
|
||||||
|
"تقصیرارو": "تقصیرا رو",
|
||||||
|
"جدیدابرای": "جدیدا برای",
|
||||||
|
"جعبهابزار": "جعبه ابزار",
|
||||||
|
"جلوتونو": "جلو تو نو",
|
||||||
|
"حاضردر": "حاضر در",
|
||||||
|
"حاضرنیست": "حاضر نیست",
|
||||||
|
"دستنخورده": "دست نخورده",
|
||||||
|
"دوامتیاز": "دو امتیاز",
|
||||||
|
"دوروزتمام": "دو روز تمام",
|
||||||
|
"شخصیسازی": "شخصیسازی",
|
||||||
|
"شدواجناس": "شد و اجناس",
|
||||||
|
"شوهردارم": "شوهر دارم",
|
||||||
|
"شوهرشماهم": "شوهر شما هم",
|
||||||
|
"شوهرمحترم": "شوهر محترم",
|
||||||
|
"شکلگیری": "شکل گیری",
|
||||||
|
"صخرهنوردی": "صخرهنوردی",
|
||||||
|
"صدوبیست": "صد و بیست",
|
||||||
|
"عقبنشینی": "عقب نشینی",
|
||||||
|
"عکسالعمل": "عکسالعمل",
|
||||||
|
"غرغرمیکنم": "غرغر میکنم",
|
||||||
|
"هزاربار": "هزار بار",
|
||||||
|
"هزارتومان": "هزار تومان",
|
||||||
|
"هزارجور": "هزار جور",
|
||||||
|
"هزاروسیصد": "هزار و سیصد",
|
||||||
|
"هممیهنان": "هم میهنان",
|
||||||
|
"هممیهنانش": "هم میهنانش",
|
||||||
|
"همنسلانش": "هم نسلانش",
|
||||||
|
"همهگیری": "همه گیری",
|
||||||
|
"هییییچ": "هیچ",
|
||||||
|
"وقتاخیلی": "وقتا خیلی",
|
||||||
|
"وقتابه": "وقتا به",
|
||||||
|
"وقتگذرانی": "وقت گذرانی",
|
||||||
|
"ومحکوم": "و محکوم",
|
||||||
|
"ومحیطها": "و محیطها",
|
||||||
|
"وکشورتان": "و کشورتان",
|
||||||
|
"ویکیمدیا": "ویکیمدیا",
|
||||||
|
"یهوگفت": "یهو گفت",
|
||||||
|
"اینجااز": "اینجا از",
|
||||||
|
}
|
||||||
|
fixator_dictionary = {
|
||||||
|
"بهای": "بهای",
|
||||||
|
"بهترین": "بهترین",
|
||||||
|
"آستر": "آستر",
|
||||||
|
"ارکستر": "ارکستر",
|
||||||
|
"انتر": "انتر",
|
||||||
|
"بستر": "بستر",
|
||||||
|
"بهتر": "بهتر",
|
||||||
|
"بهترتر": "بهترتر",
|
||||||
|
"توئیتر": "تویتتر",
|
||||||
|
"توییتر": "توییتر",
|
||||||
|
"تیتر": "تیتر",
|
||||||
|
"دختر": "دختر",
|
||||||
|
"دفتر": "دفتر",
|
||||||
|
"دلستر": "دلستر",
|
||||||
|
"دکتر": "دکتر",
|
||||||
|
"شتر": "شتر",
|
||||||
|
"لیتر": "لیتر",
|
||||||
|
"متر": "متر",
|
||||||
|
"هیپستر": "هیپستر",
|
||||||
|
"پیتر": "پیتر",
|
||||||
|
"چتر": "چتر",
|
||||||
|
"کمتر": "کمتر",
|
||||||
|
"گنگستر": "گنگستر",
|
||||||
|
"انگشتر": "انگشتر",
|
||||||
|
"سنتر": "سنتر",
|
||||||
|
"تویتتر": "توییتر",
|
||||||
|
"مادهشتر": "ماده شتر",
|
||||||
|
"ویترین": "ویترین",
|
||||||
|
"کرونومتر": "کرنومتر",
|
||||||
|
"کهتر": "کهتر",
|
||||||
|
"فیلتر": "فیلتر",
|
||||||
|
"الهام": "الهام",
|
||||||
|
"آلمان": "آلمان",
|
||||||
|
"انتهای": "انتهای",
|
||||||
|
"انتهایی": "انتهایی",
|
||||||
|
"آموختهام": "آموختهام",
|
||||||
|
}
|
||||||
203
normalizer.py
Normal file
203
normalizer.py
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
from parsivar import Normalizer
|
||||||
|
|
||||||
|
import num2fawords
|
||||||
|
import re
|
||||||
|
import string
|
||||||
|
|
||||||
|
|
||||||
|
_normalizer = Normalizer(half_space_char="\u200c", statistical_space_correction=True)
|
||||||
|
chars_to_ignore = [
|
||||||
|
",", "?", ".", "!", "-", ";", ":", '""', "%", "'", '"', "<EFBFBD>",
|
||||||
|
"#", "!", "؟", "?", "«", "»", "،", "(", ")", "؛", "'ٔ", "٬", 'ٔ', ",", "?",
|
||||||
|
".", "!", "-", ";", ":", '"', "“", "%", "‘", "”", "<EFBFBD>", "–", "…", "_", "”", '“', '„',
|
||||||
|
'ā', 'š', 'ّ', 'ْ',
|
||||||
|
]
|
||||||
|
chars_to_ignore = chars_to_ignore + list(string.ascii_lowercase + string.digits)
|
||||||
|
chars_to_ignore = f"""[{"".join(chars_to_ignore)}]"""
|
||||||
|
zwnj = "\u200c"
|
||||||
|
silent_chars = ["ا", "د", "ذ", "ر", "ز", "و", "آ"] + [zwnj] + [" "]
|
||||||
|
|
||||||
|
|
||||||
|
def multiple_replace(text, chars_to_mapping):
|
||||||
|
pattern = "|".join(map(re.escape, chars_to_mapping.keys()))
|
||||||
|
return re.sub(pattern, lambda m: chars_to_mapping[m.group()], str(text))
|
||||||
|
|
||||||
|
|
||||||
|
def remove_special_characters(text, chars_to_ignore_regex):
|
||||||
|
text = re.sub(chars_to_ignore_regex, '', text).lower() + " "
|
||||||
|
return text
|
||||||
|
|
||||||
|
|
||||||
|
def convert_word_nums_to_text(word):
|
||||||
|
try:
|
||||||
|
word = int(word)
|
||||||
|
word = num2fawords.words(word)
|
||||||
|
except:
|
||||||
|
word = word
|
||||||
|
|
||||||
|
return word
|
||||||
|
|
||||||
|
|
||||||
|
def normalizer_at_word_level(text):
|
||||||
|
words = text.split()
|
||||||
|
_text = []
|
||||||
|
|
||||||
|
for word in words:
|
||||||
|
word = convert_word_nums_to_text(word)
|
||||||
|
word = fixator_dictionary.get(word, word)
|
||||||
|
|
||||||
|
_text.append(word)
|
||||||
|
|
||||||
|
return " ".join(_text) + " "
|
||||||
|
|
||||||
|
|
||||||
|
def finder(ss, s, starter=False):
|
||||||
|
found = []
|
||||||
|
for m in re.finditer(ss, s):
|
||||||
|
if starter:
|
||||||
|
found.append(m.start())
|
||||||
|
else:
|
||||||
|
found.append((m.start(), m.end()))
|
||||||
|
|
||||||
|
return found
|
||||||
|
|
||||||
|
|
||||||
|
def substring_replace(ss, s, start, end, stripped=True):
|
||||||
|
s_start = s[:start]
|
||||||
|
s_end = s[end:]
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
if stripped:
|
||||||
|
counter = 1 if s_start.endswith(" ") else counter
|
||||||
|
s_start = s_start.rstrip()
|
||||||
|
|
||||||
|
return s_start + ss + s_end, counter
|
||||||
|
|
||||||
|
|
||||||
|
def normalizer(
|
||||||
|
batch,
|
||||||
|
is_normalize=True,
|
||||||
|
return_dict=True,
|
||||||
|
filter_trivials=False,
|
||||||
|
remove_extra_space=False
|
||||||
|
):
|
||||||
|
text = batch["sentence"].lower().strip()
|
||||||
|
|
||||||
|
# Parsivar normalizer
|
||||||
|
if is_normalize:
|
||||||
|
text = _normalizer.normalize(text)
|
||||||
|
|
||||||
|
# Dictionary mapping
|
||||||
|
text = multiple_replace(text, dictionary_mapping)
|
||||||
|
text = re.sub(" +", " ", text)
|
||||||
|
|
||||||
|
# Remove specials
|
||||||
|
text = remove_special_characters(text, chars_to_ignore)
|
||||||
|
text = re.sub(" +", " ", text)
|
||||||
|
|
||||||
|
# Replace connected آ
|
||||||
|
special, pointer = "آ", int("0")
|
||||||
|
for f in sorted(finder(special, text, True)):
|
||||||
|
index = f + pointer - 1
|
||||||
|
if len(text) >= index:
|
||||||
|
if text[index] not in silent_chars:
|
||||||
|
new_text, extra_pointer = substring_replace(
|
||||||
|
f"{text[index]}{zwnj}", text, index, index + 1, stripped=True)
|
||||||
|
text = new_text
|
||||||
|
pointer += 1 + 1 - 1 - extra_pointer
|
||||||
|
|
||||||
|
# Replace connected ها
|
||||||
|
pointer = int("0")
|
||||||
|
special_list = [
|
||||||
|
# "ام", "ای", "است", "ایم", "اید", "اند",
|
||||||
|
"هایمان", "هایم", "هایت", "هایش",
|
||||||
|
"هایتان", "هایشان", "هام", "هات",
|
||||||
|
"هاتان", "هامون", "هامان", "هاش",
|
||||||
|
"هاتون", "هاشان", "هاشون",
|
||||||
|
"هایی", "های", "هاس", "ها"
|
||||||
|
]
|
||||||
|
for special in special_list:
|
||||||
|
pointer = 0
|
||||||
|
text = text
|
||||||
|
for f in sorted(finder(special, text, False)):
|
||||||
|
start, end = f[0] + pointer - 1, f[1] + pointer - 1
|
||||||
|
if len(text) >= (end + 1):
|
||||||
|
if len(text) == (end + 1):
|
||||||
|
new_text, extra_pointer = substring_replace(
|
||||||
|
f"{zwnj}{special}",
|
||||||
|
text,
|
||||||
|
start + 1,
|
||||||
|
end + 1,
|
||||||
|
stripped=True)
|
||||||
|
text = new_text
|
||||||
|
pointer += 1 + 1 - 1 - extra_pointer
|
||||||
|
else:
|
||||||
|
if text[end + 1] == " ":
|
||||||
|
new_text, extra_pointer = substring_replace(
|
||||||
|
f"{zwnj}{special}",
|
||||||
|
text,
|
||||||
|
start + 1,
|
||||||
|
end + 1,
|
||||||
|
stripped=True)
|
||||||
|
text = new_text
|
||||||
|
pointer += 1 + 1 - 1 - extra_pointer
|
||||||
|
|
||||||
|
special, pointer = "افزار", int("0")
|
||||||
|
for f in sorted(finder(special, text, False)):
|
||||||
|
start, end = f[0] + pointer - 1, f[1] + pointer - 1
|
||||||
|
|
||||||
|
if len(text) >= (end + 1):
|
||||||
|
new_text, extra_pointer = substring_replace(f"{zwnj}{special}", text, start + 1, end + 1, stripped=True)
|
||||||
|
text = new_text
|
||||||
|
pointer += 1 + 1 - 1 - extra_pointer
|
||||||
|
|
||||||
|
# Replace connected ها
|
||||||
|
pointer = int("0")
|
||||||
|
special_list = [
|
||||||
|
"ترین", "تر"
|
||||||
|
]
|
||||||
|
for special in special_list:
|
||||||
|
pointer = 0
|
||||||
|
text = text
|
||||||
|
for f in sorted(finder(special, text, False)):
|
||||||
|
start, end = f[0] + pointer - 1, f[1] + pointer - 1
|
||||||
|
if len(text) >= (end + 1):
|
||||||
|
if len(text) == (end + 1):
|
||||||
|
new_text, extra_pointer = substring_replace(
|
||||||
|
f"{zwnj}{special}",
|
||||||
|
text,
|
||||||
|
start + 1,
|
||||||
|
end + 1,
|
||||||
|
stripped=True)
|
||||||
|
text = new_text
|
||||||
|
pointer += 1 + 1 - 1 - extra_pointer
|
||||||
|
else:
|
||||||
|
if text[end + 1] == " ":
|
||||||
|
new_text, extra_pointer = substring_replace(
|
||||||
|
f"{zwnj}{special}",
|
||||||
|
text,
|
||||||
|
start + 1,
|
||||||
|
end + 1,
|
||||||
|
stripped=True)
|
||||||
|
text = new_text
|
||||||
|
pointer += 1 + 1 - 1 - extra_pointer
|
||||||
|
|
||||||
|
# Normalizer at word level
|
||||||
|
text = normalizer_at_word_level(text)
|
||||||
|
text = re.sub(" +", " ", text)
|
||||||
|
|
||||||
|
if remove_extra_space:
|
||||||
|
text = text.strip()
|
||||||
|
else:
|
||||||
|
text = text.strip() + " "
|
||||||
|
|
||||||
|
if filter_trivials:
|
||||||
|
if not len(text) > 2:
|
||||||
|
text = None
|
||||||
|
|
||||||
|
if not return_dict:
|
||||||
|
return text
|
||||||
|
|
||||||
|
batch["sentence"] = text
|
||||||
|
return batch
|
||||||
|
|
||||||
5214
predictions.csv
Normal file
5214
predictions.csv
Normal file
File diff suppressed because it is too large
Load Diff
9
preprocessor_config.json
Normal file
9
preprocessor_config.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"do_normalize": true,
|
||||||
|
"feature_extractor_type": "Wav2Vec2FeatureExtractor",
|
||||||
|
"feature_size": 1,
|
||||||
|
"padding_side": "right",
|
||||||
|
"padding_value": 0.0,
|
||||||
|
"return_attention_mask": true,
|
||||||
|
"sampling_rate": 16000
|
||||||
|
}
|
||||||
3
pytorch_model.bin
Normal file
3
pytorch_model.bin
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d6d33fc8e01332e2e4cf0230c159f63d02620a0528c19c69c3ce7d58777223e2
|
||||||
|
size 1262097815
|
||||||
BIN
sample1.flac
Normal file
BIN
sample1.flac
Normal file
Binary file not shown.
BIN
sample2978.flac
Normal file
BIN
sample2978.flac
Normal file
Binary file not shown.
BIN
sample5168.flac
Normal file
BIN
sample5168.flac
Normal file
Binary file not shown.
1
special_tokens_map.json
Normal file
1
special_tokens_map.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"bos_token": "<s>", "eos_token": "</s>", "unk_token": "<unk>", "pad_token": "<pad>"}
|
||||||
3
tf_model.h5
Normal file
3
tf_model.h5
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:3eb1167b6d301f201da515819ef0bfb697821a4db0e6d5b6dcb1ea2baa3f0aa6
|
||||||
|
size 1262429728
|
||||||
1
tokenizer_config.json
Normal file
1
tokenizer_config.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"unk_token": "<unk>", "bos_token": "<s>", "eos_token": "</s>", "pad_token": "<pad>", "do_lower_case": false, "word_delimiter_token": "|", "special_tokens_map_file": "/workspace/output_models/fa/xlsr-fa/special_tokens_map.json", "tokenizer_file": null, "name_or_path": "/workspace/output_models/fa/xlsr-fa"}
|
||||||
3341
trainer_state.json
Normal file
3341
trainer_state.json
Normal file
File diff suppressed because it is too large
Load Diff
1
vocab.json
Normal file
1
vocab.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "آ": 5, "ئ": 6, "ا": 7, "ب": 8, "ت": 9, "ث": 10, "ج": 11, "ح": 12, "خ": 13, "د": 14, "ذ": 15, "ر": 16, "ز": 17, "س": 18, "ش": 19, "ص": 20, "ض": 21, "ط": 22, "ظ": 23, "ع": 24, "غ": 25, "ف": 26, "ق": 27, "ل": 28, "م": 29, "ن": 30, "ه": 31, "و": 32, "پ": 33, "چ": 34, "ژ": 35, "ک": 36, "گ": 37, "ی": 38, "": 39}
|
||||||
Reference in New Issue
Block a user