Shell Scripts for Arabic Language processing سكريبتات سطر الأوامر للتعامل مع النصوص العربية
This project is a collection of small shell scripts used to process arabic texts, like:
- Tokenize a file text into tokens (duplicate, unique)
- Strip Tashkeel from text ( all diacritics, keep shadda, last haraka )
- Strip only the last mark from every word in text.
- Convert Alef_Wasla into Alef
- Build a list from csv file
هذا المشروع يجمع سكريبتات بسيطة لمعالجة الملفات النصية العربية مثل:
- تفريق نص إلى كلمات
- تفريق النص، وحذف المكررات
- حذف التشكيل، حذف الحركات وحفظ الشدة، حذف آخر حركة
- تحويل ألف الوصلة إلى ألف عادية
- تحويل ملف نصي csv إلى قائمة
شَلْشَلَ [ ش ل ش ل ]. ( فعل : رباعي لازم متعد ). :- شَلْشَلْتُ ، أُشَلْشِلُ ، شَلْشِلْ ، مصدر شَلْشَلَةٌ . 1 . :- شَلْشَلَ الْمَاءَ :- : صَبَّهُ مُتَتَابِعاً . 2 . :- شَلْشَلَ الْمَاءُ :- : قَطَرَ وَسَالَ مُتَتَابِعاً . 3 . :- شَلْشَلَ السَّيْفُ الدَّمَ :- : صَبَّهُ .
الاسم مأخوذ من شبهه بكلمة shell التي تعني سطر الأوامر،
والمعنى في الشلشلة هي التتابع
make installmake testDisplay all possible command by using
shellshal1- You can tokenize a text file by the following script.
tokenize.sh filename
sed 's/[[:punct:][:space:]×،؛]/\n/g' < $1 |sed '/^\s*$/d'2- Tokenize, sort, removre duplicates and count frequencies for words in file. The result file is filename.unq.
tokenize_uniq.sh filename
sed 's/[[:punct:][:space:]×،؛]/\n/g' < $1 |sed '/^\s*$/d' | sort | uniq -c | sort -nr >$1.unq1- Remove Harakat (diacritics), Tatweel and Shadda from text
strip_tashkeel.sh filename
source
CHARS=$(python -c 'print u"\u064b\u064c\u064d\u064e\u064f\u0651\u0652".encode("utf8")')
sed 's/['"$CHARS"']//g' < $12- Remove Harakat (diacritics) and Tatweel from text, but keep Shadda
strip_harakat.sh filename
source
CHARS=$(python -c 'print (u"\u064b\u064c\u064d\u064e\u064f\u0650\u0652\u0670".encode("utf8"))')
sed 's/['"$CHARS"']//g' < $13- Remove last Haraka (diacritic) from the end of words from text
strip_lastmark.sh filename
source
CHARS=$(python -c 'print u"\u064b\u064c\u064d\u064e\u064f\u0651\u0652".encode("utf8")')
sed 's/['"$CHARS"']$//g' < $14- Replace Alef wasla to simple alef in words from text
replace_wasla.sh filenamesource
CHARS=$(python -c 'print (u"\u0671".encode("utf8"))')
TO=$(python -c 'print (u"\u0627".encode("utf8"))')
sed 's/['"$CHARS"']/'"$TO"'/g' < $11-Makelist Convert file into list; csv file or one word per line
shellshal/makelist.sh testfile.csv
source
awk 'BEGIN{print "MyList=["};/^[^#]/{printf "u\"%s\",\n",$1};END{print "]"}' $1
