پرش بـه ناوبری پرش بـه جستجو

به جای YourBot نام ربات خودتان را بنویسید

کد

#!/usr/bin/python # -*- coding: یک دو سه چهار مال ماس چار فی utf-8 -*- # Reza(User:reza1615), 2013 # # Distributed under the terms of MIT License (MIT) version=u'8.0' import re,codecs,os import pywikibot from pywikibot.compat import query import string from datetime import timedelta,datetime faSite = pywikibot.Site('fa') bot_adress=u'/data/project/YourBot/' #----------------- tags = ur'b|big|blockquote|charinsert|code|comment|del|div|em|gallery|hyperlink|i|includeonly|imagemap|inputbox|link|math|noinclude|nowiki|pre|ref|s|small|source|startspace|strong|sub|sup|template|timeline' faChrs = u'ءاآأإئؤبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیيك' langs = u'بلغاری|بنگالی|پارسی باستان|پارسی مـیانـه|پالی|پرتغالی|پشتو|پنجابی|پین‌یینی|تاگالوگ|تامـیلی|تاهیتی|تایلندی|ترکمنی|ترکی|ترکی استانبولی|ترکی آذربایجانی|تلگو|جاوه‌ای|چکی|چینی|چینی ساده‌شده|چینی سنتی|دانمارکی|دوناگری|روسی|رومانیـایی|ژاپنی|سامـی|سانسکریت|سریـانی|سکایی|سواحلی|سواحیلی|سوندایی|سوئدی|سیسیلی|صربی|عبری|عربی|فارسی افغانستان|فارسی ایران|فارسی تاجیکی|فارسی سره|فرانسوی|فنلاندی|فیلیپینی|کاتالان|کردی|کره‌ای|کروات|کرواسی|گالیسی|گجراتی|گرجی|گرینلندی|لاتین|لتونیـایی|لیتوانیـایی|مازندرانی|مالایی|مالزیـایی|مجاری|مراتی|مصری|مغولی|مقدونی|نپالی|نروژی|نروژی نو|نورمنی|هاوائی|هائیتیـایی|هلندی|هندی|هواسایی|ولزی|ویتنامـی|یونانی|یونانی باستان' zaed = ur"''متن مورب''|'''متن ضخیم'''|\[\[پرونده:مثال\.jpg]]|=+ متن عنوان =+|:خط تو رفته\n?|<nowiki>اینجا متن قالب‌بندی‌نشده وارد شود</nowiki>|\# مورد فهرست شماره‌ای\n?|\* مورد فهرست گلوله‌ای|<sub>متن زیرنویس</sub>|<sup>متن بالانویس</sup>|<small>متن کوچک</small>|<big>متن بزرگ</big>|#(؟:تغییرمسیر|REDIRECT) \[\[(?:نام صفحه مقصد|نام صفحه)]]|\{\| class=\.wikitable\.\n\|-\n! متن عنوان !! متن عنوان !! متن عنوان\n\|-\n\| مثال \|\| مثال \|\| مثال\n\|-\n\| مثال \|\| مثال \|\| مثال\n\|-\n\| مثال \|\| مثال \|\| مثال\n\|}|<gallery>\nپرونده:مثال\.jpg\|عنوان ۱\nپرونده:مثال.jpg\|عنوان ۲\n</gallery>|<ref>{{یـادکرد\|نویسنده = \|عنوان = \| ناشر = \|صفحه = \|تاریخ = }}</ref>|<ref>{{یـادکرد وب\|نویسنده = \|نشانی = \|عنوان = \| ناشر = \|تاریخ = \|تاریخ بازدید = }}</ref>|<ref>{{یـادکرد خبر\|نام = \|نام خانوادگی = \|همکاران = \|پیوند = \|عنوان = \|اثر = \| ناشر = \|صفحه = \|تاریخ = \|بازیـابی = }}</ref>|\[\[رده:]]|\[\[en:]]|\[\[fa:.*?]]|\[\[عنوان پیوند]]|\{\{\s*}}|\[\[\s*\|?\s*]]|<!-- *?-->|\'\'\'متن ضخیم'\'\'\|'\'متن مورب\'\'|\'\'\'متن پررنگ\'\'\'"#----------------- bnMazi = u'[آا]راست|[آا]را?مـید|[آا]زرد|[آا]زمود|[آا]سود|[آا]شامـید|[آا]شفت|[آا]فرید|[آا]لا[یئ]ید|[آا]لود|[آا]ما[هس]ید|[آا]مد|[آا]مرزید|[آا]م[یو]خت|آورد|[آا][هو]یخت|[آا]غ[شس]ت|ارزید|افتاد|افراشت|ا?فروخت|افزود|افسرد|ا?فشاند|اف[کگ]ند|انجامـید|اند[او]خت|اندیشید|ان[بگ]اشت|نگاشت|انگیخت|ایستاد|با[خف]ت|با[لر]ید|[شب]ایست|بخش[یو]د|برازید|ب[ور]د|[چبپ]رید|[رجشب]ست|بلعید|پ[وا]شید|پخت|پذیرفت|پرا[کگ]ند|پرداخت|پرست?ید|پرورد|پرید|پژمرد|پژوهید|پسندید|پنداشت|[بپ]و[سشی]ید|پیچید|پیراست|پیمود|پیوست|تا[فخ]ت|تپید|ترا[وش]ید|تر[سشک]ید|تکانی?د|تنید|توانست|جن[بگ]ید|[جد]وش?ید|چرخید|چسبید|چ[مکشر]?ید|خر[او]شید|خ[مرز]ید|خشکید|خوابید|خو?است|خواند|خورد|خیسید|داد|داشت|[مد]انست|درخشید|دزدید|دوخت|ربود|راند|ر[مس]ید|رو?فت|رنجید|رو[یئ]ید|ریخت|زد|زدود|زیست|س[وا]خت|سپرد|س[تر]ود|ستیزید|سرشت|سزید|سنجید|ش[تکگ]افت|شد|شک?ست|ش[کگ]فت|شمرد|شناخت|شنید|شورید|طلبید|غلطید|فرستاد|فر[مس]ود|فریفت|فشرد|فهمـید|قبولاند|کا[سش]ت|کاوید|ک[نر]د|کشت|کشید|کو[چش]ید|کوفت|گداخت|گذا?شت|گرا[یئ]ید|گردید|گرفت|گروید|گری[خس]ت|گزارد|گزید|گس[تا]رد|گسست|گ[فش]ت|گشود|گماشت|گنجید|ل[رغ]زید|ما[لس]ید|ماند|مرد|نا[مل]ید|نشست|نکوهید|نگاشت|ن?گریست|نمود|نواخت|نوردید|نوشت|نـهاد|نـهفت|نی?وشید|ور?زید|هراسید|هلید|یـازید|یـافت' bnMzare = u'[آا]را[یم]|[آا]زار|[آا]ماس|[آا]ز?مای|[آا]سای|[آا]شام|[آا]شوب|[آا]غا[رز]|[آا]فرین|[آا]گن|[آا]لای|[آا]ی|[آا]م[یور]ز|[آا]و?ر|[آا]ویز|[آا]هنج|ارز|افت|افر[او]ز|افزای|افسر|ا?فشان|اف[کگ]ن|انبار|انجام|اندا[یز]|اندوز|اندیش|ا?نگار|انگیز|اوبار|ایست|با[فلیشرز]|بخشای|بخش|براز|ب[َُ]?ر|بند|بساو|بسیج|بلع|بو[یس]?|بیز|پاش|پالای|پ[رز]|پذیر|پرا[کگ]ن|پرداز|پرست?|پرور|پژمر|پژوه|پسند|پلاس|پلک|پناه|پندار|پو[سشیک]|پیچ|پی[مر]ای|پیوند|تا[پز]|تو?پ|ترا[شو]|تر[سشک]|تکان|تن|توان|[نلجد]ه|جن[بگ]|جو[یش]?|چا[یپ]|چ[مکپشفر]|چر[خب]?|چسب?|چلان|چین|خا[یر]|خرا[مش]|خس[بت]|خشک|خروش|خ[ملرز]|خوا[نبه]|خو[فر]|خی[سز]|دا[نر]|درخش|درو?|دزد|[لد]م|دو[شز]?|ربای|ران|رخش|ر[سمـه]|رو[یب]?|رشت||رنج|[بر]ی[نز]|زا[یر]|ز[ین]|زدای|ساز|سپا?ر|سپ؟وز|ستان|ستر|ستیز|سرای|سرشت|س[رز]|سنب|سگال|سنج|سای|شا[شی]|شتاب|شوی?|شک[او]ف|شکن|شکیب|ش[مو]ر|شناس|شنو|طلب|طوف|غارت|غرّ?|غلط|غنو|فرست|فر[سم]ای|فروش|فریب|فشر|فهم|قاپ|قبولان|کا[هرو]|ک[َُِ]?ش|ک[نف]|کو[چشب]|گای|گداز|گذا?ر|گرا[یز]|گرد|گیر|گرو|گریز?|گزار|گز|گزین|گس[تا]ر|گسی?ل|گشای|گو[یز]|گن[جد]|گ[مو]ار|ل[غر]ز|لن[گد]|لیس|ما[سلن]|مـیر|مک|مو[یل]|نا[زلم]|ن?شین|نکوه|نگا?ر|نمای|نواز|نورد|نویس|نـهنب|نی?وش|ور?ز|هراس|هل|یـا[برز]' noAlef = u'باجی|بادانی?|بادی?|بار|باژور|بافت|با[لن]|بانگا[نـه]|بتاب|بجی?|بچین|بخس[بت]|بخواره|بخور[دشی]?|بخوست|بخیز|بدارچی|بدارخانـه|بدار[وکی]?|بدستان|بدستی?|بدندان|بدنگ|بده|بدیده|براهه?|برفت|برو[دن]|بریز|بریزگان|بزن|بز[یـه]|بژ|بسال|بسالان|بست|بستره|بست[نـه]|بسکون|بسه|بسوار|بشار|بشتگاه|بشتن?|بشخور|بش[نیش]|بشنگ|بغوره|بفت|بک|بکار|ب‌?کافت|بکا[نم]ه|بکش|بکشین|د|بکوهه|بکی|بگاه|بگرد|بگردان|بگز|بگوشت|بگون|بگیر|بگینـه|بلوج|بنوس|بوند|بونمان|بونـه|بیـار|پارات|پارتاید|پارتمان|پاراتی|پاندیس|پاندیسیت|تربان|ترمـه|تروپین|تریـاد|تشبار|تشبان|تشپا|تشخوار|تشدان|تشفشان|تشک|تشکده|تشگاه|تش[هی]?|تشیزه|تشین|تلیـه|ته|تورپات|تیـه|ثار|ثام|جاردن|جان|جودان|جید[نـه]|جیل|جین|چار|چاردن|چارکشی|چمز|حاد|خال|خت[نـه]|خر|خرالامر|خرالزمان|خرت|خردست|خرزمان|خریـا؟ن|خ[سش]مـه|خشیج|خشیجان|خشیگ|خور|خورچرب|خورخشک|خورسنگین|خوندبازی|خوندک?|دا[بشک]|دامس|دخ|درس|درمـه?|درنگ|دمک|دمـیت|دمـیرال|دمـیزاد|دنیس|دیش|دیند?ه|ذار|ذری?|ذربایجانی?|ذربو|ذرجشن|ذرخش|ذریو?ن|ذوقه|ذین|را[یء]|راستن|راسته|رام|رامانیدن|رامش|رامگاه|رامـی|رامـیدن|رایش|رایشگاه|رایشگر|راییدن|رتروز|رتزین|رتیست|رتیشو|رخالق|ردبیز|رده|ردینـه|رزم|رزو|رزوخواه|رزومندی?|رشـه|رشیتکت|رشیو|رغ|رغده|رگون|رمان|رمان‌?شـهر|رمـیچر|رمـید[هن]|رن|رنائوت|رنج|رنگ|رواره|روبند|روغ|ری|ریـا|ریستوکرات|ریستوکراسی|ریغ|زادگان|زادگی|زادمرد|زاد[یـه]?|زادوار|زادی‌?خواه|زار|زارتلخه|زا?رد[نـه]|زارنده|زا|زال|زجوی|زخ|زدن|زرد|زردگی|زرم|زرمجو|زرمگین|زری|زغ|زفنداک|زگار|زما|زمایش|زمایشگاه|زماینده|زمایـه|زمندی?|زمودگی|زمود[نـه]|زمون|زناک|زور|زوغ|زوقه|زیدن|زیر|ژان|ژانس|ژخ|ژدار|ژده|ژغ|ژفنداک|ژگن|ژن[دگ]|ژندن|ژندیدن|ژیـانـه|ژید[نـه]|ژیر|ژیرنده|ژی|ژینـه|سان||سانی|سایش|سایشگاه|ساینده|ساییدن|سبان|سپیرین|ستانـه|ستر|ستیگماتیسم|ستی[من]ه?|سدست|سغده|سفالت|سکاریس|سمانخانـه|سمانخراش|سمان[هی]?|سموغ|سه|سودگی|سود[نـه]|سیـابان|سیـاچرخ|سیـازنـه|سیـا|سیـا[وب]?|سیـایی|سیب|سیل|سی[من]ه|سیون|شا[بم]|شامـیدن|شانـه|شپز|شپزخانـه|شتالنگ|شت[مـی]|شخال|شخانـه|شردن|شرمـه|شفتگی|شفت[نـه]?|شکار|شکارساز|شکاره|شکوبه|شکو[بخ]?|شکوخیدن|شگر|شمالی?|شموغ|شنا|شناگر|شنا[هو]|شناوری|شنایی|شوب|شوب‌?گر|شوبیدن?|شور|شوردن|شوریده|شوغ|شوفتن|شیـانـه|شیـهه|صال|غُش|غا|غاجی|غار|غاردن|غاری|غا|غازگر|غاز[هی]?|غازیدن|غالش?|غالنده|غالید[نـه]|غچه|غردن|غری?|غز|غ[سش]ت[نـه]|غل|غندن|غنده|غو[زشل]|غوشیدن|غیل|فا[تق]|فاقی|فتاب[هی]?|فتومات|فدم|فرنگ|فروشـه|فریدگار|فرید[نـه]|فرین|فرینگان|فریننده|فگانـه|فل|فند|فندیدن|فیش|ق|قا|قازاده|قاسی|ق‌?بانو|قچه|قسنقر|قشام|قطی|قورایی|قوش|کادمـیک?|کاردئون|کام|ک[بپج]|کبند|کتریس|کتور|کروبات|کروباسی|کستن|ککرا|کله|کند[نـه]|کنش|کنـه|کنیدن|کواریوم|کوستیک|کولاد|کومولاتور|گاهاندن|گاهی?|گ[پج]|گراندیسمان|گرمان|گشتن|گفت|گنج|گنده|گهی|گو|گور|گورگر|گو[شن]|گیشیدن|گی[من]|لاپلنگی|لات|لاچیق|لاخون|لاس|لاسکا|لاگارسون|لامد?|لاوه?|لایش|لاییدن|لبالو|لبوم|لبومـین|لپر|لت|لترناتیو|لر|لرژی|ل[شغ]|لغده|لفا|لفت[نـه]|لکالویید|لگرو|لگونـه|لوچه|لودگی|لود[نـه]|لوسن|لومـین|لومـینیوم|لو[ئن]ک|لیـاژ|لیداد|لیزیدن|ماتور|ماج|ماجگاه|مادگی|ماده|مار|مارگر|ما|ماریلیس|ماس|ماسانیدن|ماسیدن|ماق|مال|مانی|ماهانیدن|ماهیدن|مبولانس|مپر|مپرسنج|مپلی|مپول|مپی|مخته|مدگان|مدن?|مرانـه|مرزش|مرزگار|مرزنده|مرزیدن|مرزیده|مرغ|مریکا|مریکایی?|مفی|مفیبول|مـه|موت|موخت[نـه]|مود[نـه]|موزانـه|موزشی?|موزشیـار|موزگا[رن]|موزنده|موزه|موق|موکسی|مولن|مون|مونیـاک|مـیب|مـیختگی|مـیخت[نـه]|مـیز[شـه]?|مـیزگاری?|مـیغه?|نابولیسم|نات?|ناتومـی|نارشی|نارشیس[تم]ی?|ناس|نالوگ|نالیز|نام|ناناس|نتراکت|نتریک|نت[نی]|نتیک|نجا|نچت?|ندوتوکسین|ندودرم|ندوسپرم|ندوسکوپی|ندون|نرمال|نزیم|نژین|نژیوکت|نژیوگرافی|نسه|نسیلین|نک|نگلوفیل|نوریسم|نیلین|نین|نیـه|نیون|هار|هاردن|هازیدن|هستگی|هسته|هک|همند|هنج|هنجیدن|هنگ[ری]?|هنگساز|هنین|هو|هوانگیز|هوپا|هوتک|هوچشم|هودل|هوفغند|هومند|هون|هیـانـه|هیختن|واخ|وارگی|وا[رز]ه?|واشناسی|واکس|وام|وانتاژ|وانس|وانگارد|وانویسی|وردجو|وردگا؟ه|وردن|وردیدن|ورک|ورنجن|وری|و|وریل|ونگ|ونگان|ونگون|ویخت[نـه]|ویزش?|ویزگ?ان|وی[زژ]ه|ویزون|ویشن|یـا[تن]?|یبک|یتم?|یزنـه|یژ|یفت|یفون|ینده|یـه|ییژ|یین|[یئ]?ینـه|ئورت' sametH = ur'فرمانده|زره|کوه|گره|گنـه|سپه|مکروه|م?ت?وجّ?ه|منزّ?ه|نزه|ابله|مرفّ?ه|شبیـه|مت?شابه|کریـه|پادشـه|اللّ?ه|اله|[آکبتدرزشلم]ه' #e: صامت هـ spcBfre = u'.،,:؛;؟٫)}]»》”,·。一ー・、:()「」〜?!ء' spcAftr = u'({[«《“,·。一ー٫・、:()「」〜?!' bLA = u'(?!['+faChrs+u'])' bLB = u'(?<!['+faChrs+u'])' arabicDigits = ur'0123456789' arabicIndicDigits = ur'٠١٢٣٤٥٦٧٨٩' similarPersianCharacters = ur'\u0643\uFB91\uFB90\uFB8F\uFB8E\uFEDC\uFEDB\uFEDA\uFED9\u0649\uFEEF\u064A\u06C1\u06D5\u06BE\uFEF0-\uFEF4' vowels = ur'\u064B-\u0650\u0652\u0670' persianCharacters = ur'\u0621-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2' + similarPersianCharacters persianCharactersNoVowels = ur'\u0621-\u064A\u0653-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2' + similarPersianCharacters persianDigits = ur'۰۱۲۳۴۵۶۷۸۹' hamza = ur'\u0654' NASB = u'\u064b' ZAMM = u'\u064c' persianPastVerbs = ur'(' \ + ur'ارزید|افتاد|افراشت|افروخت|افزود|افسرد|افشاند|افکند|انباشت|انجامـید|انداخت|اندوخت|اندود|اندیشید|انگاشت|انگیخت|انگیزاند|اوباشت|ایستاد' \ + ur'|آراست|آراماند|آرامـید|آرمـید|آزرد|آزمود|آسود|آشامـید|آشفت|آشوبید|آغازید|آغشت|آفرید|آکند|آگند|آلود|آمد|آمرزید|آموخت|آموزاند' \ + ur'|آمـیخت|آهیخت|آورد|آویخت|باخت|باراند|بارید|بافت|بالید|باوراند|بایست|بخشود|بخشید|برازید|برد|برید|بست|بسود|بسیجید|بلعید' \ + ur'|بود|بوسید|بویید|بیخت|پاشاند|پاشید|پالود|پایید|پخت|پذیراند|پذیرفت|پراکند|پراند|پرداخت|پرستید|پرسید|پرهیزید|پروراند|پرورد|پرید' \ + ur'|پژمرد|پژوهید|پسندید|پلاسید|پلکید|پناهید|پنداشت|پوسید|پوشاند|پوشید|پویید|پیچاند|پیچانید|پیچید|پیراست|پیمود|پیوست|تاباند|تابید|تاخت' \ + ur'|تاراند|تازاند|تازید|تافت|تپاند|تپید|تراشاند|تراشید|تراوید|ترساند|ترسید|ترشید|ترکاند|ترکید|تکاند|تکانید|تنید|توانست|جَست|جُست' \ + ur'|جست|جنباند|جنبید|جنگید|جهاند|جهید|جوشاند|جوشید|جوید|چاپید|چایید|چپاند|چپید|چراند|چربید|چرخاند|چرخید|چرید|چسباند|چسبید' \ + ur'|چشاند|چشید|چکاند|چکید|چلاند|چلانید|چمـید|چید|خاراند|خارید|خاست|خایید|خراشاند|خراشید|خرامـید|خروشید|خرید|خزید|خست|خشکاند' \ + ur'|خشکید|خفت|خلید|خمـید|خنداند|خندانید|خندید|خواباند|خوابانید|خوابید|خواست|خواند|خوراند|خورد|خوفید|خیساند|خیسید|داد|داشت|دانست' \ + ur'|درخشانید|درخشید|دروید|درید|دزدید|دمـید|دواند|دوخت|دوشید|دوید|دید|دیدم|راند|ربود|رخشید|رساند|رسانید|رست|رَست|رُست' \ + ur'|رسید|رشت|رفت|رُفت|اند|ید|رمـید|رنجاند|رنجید|رندید|رهاند|رهانید|رهید|روبید|روفت|رویـاند|رویید|ریخت|رید|ریسید' \ + ur'|زاد|زارید|زایید|زد|زدود|زیست|سابید|ساخت|سپارد|سپرد|سپوخت|ستاند|ستد|سترد|ستود|ستیزید|سرایید|سرشت|سرود|سرید' \ + ur'|سزید|سفت|سگالید|سنجید|سوخت|سود|سوزاند||شایست|شتافت|شد|شست|شکافت|شکست|شکفت|شکیفت|شگفت|شمارد|شمرد|شناخت' \ + ur'|شناساند|شنید|شوراند|شورید|طپید|طلبید|طوفید|غارتید|غرید|غلتاند|غلتانید|غلتید|غلطاند|غلطانید|غلطید|غنود|فرستاد|فرسود|فرمود|فروخت' \ + ur'|فریفت|فشاند|فشرد|فهماند|فهمـید|قاپید|قبولاند|کاست|کاشت|کاوید|کرد|کشاند|کشانید|کشت|کشید|کفت|کفید|کند|کوبید|کوچید' \ + ur'|کوشید|کوفت|گَزید|گُزید|گایید|گداخت|گذارد|گذاشت|گذراند|گذشت|گرازید|گرایید|گرداند|گردانید|گردید|گرفت|گروید|گریـاند|گریخت|گریست' \ + ur'|گزارد|گزید|گسارد|گستراند|گسترد|گسست|گسیخت|گشت|گشود|گفت|گمارد|گماشت|گنجاند|گنجانید|گنجید|گندید|گوارید|گوزید|لرزاند|لرزید' \ + ur'|لغزاند|لغزید|لمباند|لمدنی|لمـید|لندید|لنگید|لهید|لولید|لیسید|ماسید|مالاند|مالید|ماند|مانست|مرد|مکشید|مکید|مولید|مویید' \ + ur'|نازید|نالید|نامـید|نشاند|نشست|نکوهید|نگاشت|نگریست|نمایـاند|نمود|نـهاد|نـهفت|نواخت|نوردید|نوشاند|نوشت|نوشید|نیوشید|هراسید|هشت' \ + ur'|ورزید|وزاند|وزید|یـارست|یـازید|یـافت' + ur')' persianPresentVerbs = ur'(' \ + ur'ارز|افت|افراز|افروز|افزا|افزای|افسر|افشان|افکن|انبار|انباز|انجام|انداز|اندای|اندوز|اندیش|انگار|انگیز|انگیزان' \ + ur'|اوبار|ایست|آرا|آرام|آرامان|آرای|آزار|آزما|آزمای|آسا|آسای|آشام|آشوب|آغار|آغاز|آفرین|آکن|آگن|آلا|آلای' \ + ur'|آمرز|آموز|آموزان|آمـیز|آهنج|آور|آویز|آی|بار|باران|باز|باش|باف|بال|باوران|بای|باید|بخش|بخشا|بخشای' \ + ur'|بر|بَر|بُر|براز|بساو|بسیج|بلع|بند|بو|بوس|بوی|بیز|بین|پا|پاش|پاشان|پالا|پالای|پذیر|پذیران' \ + ur'|پر|پراکن|پران|پرداز|پرس|پرست|پرهیز|پرور|پروران|پز|پژمر|پژوه|پسند|پلاس|پلک|پناه|پندار|پوس|پوش|پوشان' \ + ur'|پوی|پیچ|پیچان|پیرا|پیرای|پیما|پیمای|پیوند|تاب|تابان|تاران|تاز|تازان|تپ|تپان|تراش|تراشان|تراو|ترس|ترسان' \ + ur'|ترش|ترک|ترکان|تکان|تن|توان|توپ|جنب|جنبان|جنگ|جه|جهان|جو|جوش|جوشان|جوی|چاپ|چای|چپ|چپان' \ + ur'|چر|چران|چرب|چرخ|چرخان|چسب|چسبان|چش|چشان|چک|چکان|چل|چلان|چم|چین|خار|خاران|خای|خر|خراش' \ + ur'|خراشان|خرام|خروش|خز|خست|خشک|خشکان|خل|خم|خند|خندان|خواب|خوابان|خوان|خواه|خور|خوران|خوف|خیز|خیس' \ + ur'|خیسان|دار|درخش|درخشان|درو|دزد|دم|ده|دو|دوان|دوز|دوش|ران|ربا|ربای|رخش|رس|رسان' \ + ur'|رشت||ان|رم|رنج|رنجان|رند|ره|رهان|رو|روب|روی|رویـان|ریز|ریس|رین|زا|زار|زای|زدا' \ + ur'|زدای|زن|زی|ساب|ساز|سای|سپار|سپر|سپوز|ستا|ستان|ستر|ستیز|سر|سرا|سرای|سرشت|سز|سگال|سنب' \ + ur'|سنج|سوز|سوزان|شاش|شای|شتاب|شکاف|شکف|شکن|شکوف|شکیب|شمار|شمر|شناس|شناسان|شنو|شو|شور|شوران|شوی' \ + ur'|طپ|طلب|طوف|غارت|غر|غلت|غلتان|غلط|غلطان|غنو|فرسا|فرسای|فرست|فرما|فرمای|فروش|فریب|فشار|فشان|فشر' \ + ur'|فهم|فهمان|قاپ|قبولان|کار|کاه|کاو|کش|کَش|کُش|کِش|کشان|کف|کن|کوب|کوچ|کوش|گا|گای|گداز' \ + ur'|گذار|گذر|گذران|گرا|گراز|گرای|گرد|گردان|گرو|گری|گریـان|گریز|گز|گزار|گزین|گسار|گستر|گستران|گسل|گشا' \ + ur'|گشای|گمار|گنج|گنجان|گند|گو|گوار|گوز|گوی|گیر|لرز|لرزان|لغز|لغزان|لم|لمبان|لند|لنگ|له|لول' \ + ur'|لیس|ماس|مال|مان|مک|مول|موی|مـیر|ناز|نال|نام|نشان|نشین|نکوه|نگار|نگر|نما|نمای|نمایـان|نـه' \ + ur'|نـهنب|نواز|نورد|نوش|نوشان|نویس|نیوش|هراس|هست|هل|ورز|وز|وزان|یـاب|یـار|یـاز' \ + ur')' persianComplexPastVerbs = { # bug: درون گذشته ur'باز': u'آفرید|آمد|آموخت|آورد|ایستاد|تابید|جست|خواند|داشت|رساند|ستاند|شمرد|ماند|نمایـاند|نـهاد|نگریست|پرسید|گذارد' \ + ur'|گرداند|گردید|گرفت|گشت|گشود|گفت|یـافت', ur'در': u'بر ?داشت|بر ?گرفت|آمد|آمـیخت|آورد|آویخت|افتاد|افکند|انداخت|رفت|ماند|نوردید|کشید|گرفت', ur'بر': u'آشفت|آمد|آورد|افتاد|افراشت|افروخت|افشاند|افکند|انداخت|انگیخت|تاباند|تابید|تافت|تنید|جهید|خاست|خواست|خورد' \ + ur'|داشت|دمـید|شمرد|نـهاد|چید|کرد|کشید|گرداند|گردانید|گردید|گزید|گشت|گشود|گمارد|گماشت', ur'فرو': u'آمد|خورد|داد|رفت|نشاند|کرد|گذارد|گذاشت', ur'وا': u'داشت|رهاند|ماند|نـهاد|کرد', ur'ور': u'آمد|افتاد|رفت', ur'یـاد': u'گرفت', ur'پدید': u'آورد', ur'پراکنده': u'ساخت', ur'زمـین': u'خورد', ur'گول': u'زد', ur'': u'کرد', } persianComplexPresentVerbs = { # مشکل با: درون روم باستان، یک دو سه چهار مال ماس چار فی درون ده # مشکل با : بر گردن ur'باز': u'آفرین|آموز|آور|ایست|تاب|جو|خوان|دار|رس|ستان|شمار|مان|نمایـان|نـه|نگر|پرس|گذار|گردان|گرد|گشا|گو|گیر|یـاب', ur'در': u'بر ?دار|بر ?گیر|آمـیز|آور|آویز|افت|افکن|انداز|مان|نورد|کش|گذر|گیر', ur'بر': u'آشوب|آور|افت|افراز|افروز|افشان|افکن|انداز|انگیز|تابان|تاب|تن|جه|خواه|خور|خیز|دار|دم|شمار|نـه|چین|کش|کن' \ + ur'|گردان|گزین|گشا|گمار', ur'فرو': u'خور|ده|رو|نشین|کن|گذار', ur'وا': u'دار|رهان|مان|نـه|کن', ur'ور': u'افت|رو', ur'یـاد': u'گیر', ur'پدید': u'آور', ur'پراکنده': u'ساز', ur'زمـین': u'خور', ur'گول': u'زن', ur'': u'کن', } adjective = \ ur'اخمو|ارزان|ارغه|الکن|الکی|انبوه|آبدار|(نا)?آرام|آرغنده|(نا)?آشکار|(نا)?آماده|آهسته|(بی\u200c|با)انضباط|باریک|بد|بدحساب|بددل|بدریخت' \ + ur'|بر|براق|برخوردار|برومند|بزدل|بلند|بی‌آلایش|بی دست و پا|بیچاره|بیدار|بیمار|پخ|پخش|پخمـه|پرت|پرنور|پست|پشمالو|پلید|پوچ|(سر|نا)?پوشیده|پوک' \ + ur'|پیر|پیروز|تار|تپل|ترد|ترسو|تفت|تلخ|تنبل|تندرو|تنک|تنگ|تنـها|تهی|تیره|جلو|چابک|چاپلوس|چالاک|چپ|چرند|چسبان|چفته|چیره|خام|خانم|خراب' \ + ur'|خرم|خسته|خشک|(نا)?خفته|خفن|خل|خنگ|(نا)?خوانا|خوب|خوشکل|خوش‌گوار|خیراندیش|دراز|درخور|درستکار|دلباخته|دلیر|دوست|دون|رحیم|رسمـی|روانی|روشن' \ + ur'|ریغو|زبر|زبردست|زبل|زشت|زیبا|زیرک|ژرف|ژنده|ساده|(نا)?سالم|ساکت|سبک|سخاوتمند|سر|سرکش|سفت|سوسول|شایسته|شکیبا|شل|شور|طولانی|عالم|فراوان|فرز' \ + ur'|فنی|قرتی|قشنگ|قلنبه|قهرمان|کارکن|کال|کبود|کج|کچل|کر|کلان|کلفت|کم|کند|کنس|کوتاه|کوتوله|کوچک|کوچولو|کودن|گدا|گران|گرسنـه|گشاد' \ + ur'|گنگ|گود|گیج|لاغر|لبریز||لغزنده|له|مات|مچاله|مچل|(نا)?مرد|مردمـی|مردنی|مست|مشکوک|مفید|ناپدید|ناپسند|ناتوان|ناجنس|ناجور|ناچیز|ناخوش' \ + ur'|نادان|(نا)?درست|نازک|ناسپاس|نافرمان|ناگوار|نامرد|نرم|نیـازمند|نیرومند|هشیـار|هیز|واژگون|ول|ولرم|ولنگار|یکپارچه|یکدست|یکرنگ|(نا)?پیدا' \ + ur'|گناهکار|ریز|دانا|کثیف|آقا|(با|بی\u200c)سواد|عاشق|(با|بی\u200c)محبت|صاف|زمخت|فریبنده|پیچیده|سخت|دشوار|تمـیز|(نا)?پاکیزه|بزرگ|پهن|پخته|بی‌مورد' \ + ur'|بی‌نیـاز|(بی\u200c|با|)تجربه' personNames = \ ur'الله|محمد|علی|حسن|حسین|جواد|باقر|مـهدی|تقی|نقی|نازی|نجم|' \ + ur'اکرم|کاظم|عباس|منصور|خسرو|محمود|شمس|ملک|شوکت|' \ + ur'نصر|همت|جهان|جلال|موسی|ابراهیم|جعفر|احمد|قاسم|کمال|هاشم|' \ + ur'شفیع|صمد|شیخ|اسماعیل|ربیع|سلیمان|رستم|شاهرخ|فرخ|شریف|نعمت|' \ + ur'امـیر|خلیل|جلیل|مجید|اسد|شوکت|رضا|عجل|ید|عبد|سهیل|معصوم|عظیم' \ + ur'اکبر|اصغر|بهمن|قلی' wordsWithA = \ ur'ورامدن|هرزاب|هراینـه|هجوامـیز|نوش‌اذر|نواوری|نواموز|نـهراب|مـیراخور|مـیراب|مـی‌اید|مـی‌اورند|مرات' \ + ur'|ماخذ|مابی|لس‌انجلس|گل‌اذین|گزنداور|گرداوری|گرداوردن|گرداورد|گردامدن|کنداور|کفرامـیز|فرودامدن|عطراگین|طنزامـیز' \ + ur'|شیرابه|شـهرا[یئ]ین|شـهراشوب|سوداور|سراوردن|سرامدن|سرامد|سراشپز|سحرامـیز|زیرابی|زوراور|زهرالود|زهراگین|زردالو|دوداهنگ|دواتشـه' \ + ur'|دژاهنگ|دژالود|درداور|دردالود|درایند|دراید|دراویختن|دراوری|دراورنده|دراورند|دراوردن|درامده|درامدن|درامد|خیزاب|خشم‌الود' \ + ur'|چندش‌اور|جگراور|تیراهن|تهورامـیز|تنفراور|تنداب|پسندامدن|پرنداور|پردرامد|پراشوب|پراب|بی‌اب|بوا|بنداوردن' \ + ur'|بنداور|سرامدن|برایند|براورده|براوردن|براورد|برامده|برامدن|برامدگی|برامد|براشفته|براشفتن|براشفتگی|براسودن|بداهنگ' \ + ur'|بداموزی|بدامدن|بدامد|ائورت|ائسه|ا[یئ]ینـه|ا[یئ]ین‌نامـه|ا[یئ]ین|ایـه‌یـاب|ایـه|اینـه‌دار|اینده|ایندگان|ایفون' \ + ur'|ایروپلن|ایدین|ایتم|ایت‌الله|ایت|ایـات|اویشن|اویسا|اویژه|اویزون|اویزه|اویزند|اویزگر|اویزش' \ + ur'|اویزدار|اویزان|اویز|اویخته|اویختنی|اویختن|اویختگی|اویخت|اویتخه|اووکادو|اونگون|اونگان|اونگ|اوند|اوریل' \ + ur'|او|اورنده|اورند|اورنجن|اوردیدن|اورده|اوردنی|اوردن|اوردگه|اوردگاه|اوردجو|اورد' \ + ur'|اوایش|اوانویس|اوانگارد|اوانتاژ|اواکس|اواشناس|اوازه‌خوان|اوازهای|اوازه|اوازخوان|اواز|اواره|اوارگی|اوارگان' \ + ur'|اوار|اهو|اهنین|اهنگ‌ساز|اهنگرخانـه|اهنگر|اهنگ|اهن‌فروش|اهن‌ربا' \ + ur'|اهن‌پاره|اهن‌بر|اهن‌الات|اهن|اهک‌سازی|اهک‌پزی|اهک‌پز|اهک|اهسته|اهستگی|اهای|اهان' \ + ur'|انیون|انوقت|انود|انـها|ان‌گه|ان‌گاه|ان‌که|ان‌کس|انکارا|ان‌قدر|انفولانزا|انفلوانزا' \ + ur'|انفارکتوس|ان‌طور|ان‌طرف|ان‌سو|انژیوگرافی|انژین|انزیم|ان‌روی|ان‌روز|ان‌رو|اندوسکوپی|ان‌چه|ان‌جا|انتیل|انتیک' \ + ur'|انتی|انتن|انتریک|انتراکت|انتراسیت|انتالیـا|اناهیتا|اناناس|انان|انالیز|انالوگ|انارشیسم|اناتومـی|اناتولی' \ + ur'|انابولیسم|امـینـه|امـیغه|امـیغ|امـیزه|امـیزگار||امـیز|امـیخته|امـیختن|امـیختگی|امـیب|امونیوم|امونیت|امونیـاک|امون' \ + ur'|اموکسی|اموزه|اموزنده|اموزگان|اموزگار|اموزش‌یـار|اموزشگاه|اموزشکده|اموزش|اموزانـه|اموزاندن|اموز|اموده|امودن|امودریـا' \ + ur'|اموخته|اموختن|اموختگی|اموختار|امله|امریکا|امرزیده|امرزیدن|امرزیدگی|امرزنده|امرزگار|امرزش|امرز|امرانـه' \ + ur'|امدید|امدوشد|امدورفت|امده|امدن|امدگی|امد|امد|امخته|امپلی|امپرسنج|امپر|امبولی|امبولانس|امایـه|امایش|امال' \ + ur'|اماسیده|اماسیدن|اماسانیدن|اماس|امازون|امارگیر|امارگر|امارشناسی|امارشناس|اماده‌|اماده|امادگی|امادگاه' \ + ur'|اماج‌گاه|اماج|اماتور|الیداد|الیـاژهای|الیـاژ|الونک|الومـینیوم|الومـینیم|الوزرد|الوده|الودن|الودگی|الودگر|الود|الوچه' \ + ur'|الوبخارا|الما|الفرد|الفا|الرژی|التو|الترناتیو|الت|الپ|البومـین|البوم|البانی|البالوئی|البالو|الا[یئ]یدن' \ + ur'|الایشی|الایش|الای|الاسکا|الاخون|الاچیق|الات|الاباما|اگنـه|اگنده|اگندن|اگاهی‌نامـه|اگاهی‌دادن|اگاهی|اگاهگان' \ + ur'|اگاهانیدن|اگاهانـه|اگاهاندن|اگاه|اکوستیک|اکوردئون|اکواریوم|اکنـه|اکنش|اکنده|اکندن|اکله|اکسفورد|اکروبات|اکتئون' \ + ur'|اکتینیوم|اکانتاسه|اکادمـیک|اکادمـی|اق‌بانو|اقائی|اقایـان|اقامنشانـه|اقامنش|اقاسی|اقازاده|اقاجان|اقا' \ + ur'|افریننده|افرینش|افرین|افریکانس|افریقا|افریده|اف|افریدگار|افتومات|افتابه|افتاب‌مـهتاب|افتاب‌گیر' \ + ur'|افتاب‌گردان|افتاب‌زده|افتاب‌زدگی|افتاب‌رو|افتاب‌خورده|افتاب‌پرست|افتاب|افاقی|افاق|افات|اغول|اغوشیدن|اغوش|اغل' \ + ur'|اغشته|اغشتن|اغشتگی|اغش|اغالش|اغاسی|اغازین|اغازیدن|اغازیـان|اغازی|اغازه|اغازگر|اغاز|اغاجی|اغا|اشیل|اشیـانی|اشیـانـه' \ + ur'|اشیـان‌بندی|اشیـان|اشور|اشوبیدن|اشوب‌ناک|اشوب‌گرانـه|اشوب‌گر|اشوب‌کن|اشوب‌طلب|اشوب‌انگیز|اشوب|اشنایـان|اشناوری' \ + ur'|اشناگر|اشناسازی|اشنا|اشکوخیدن|اشکاره|اشکارگر|اشکارساز|اشکارا|اشکار|اشفته|اشفتن|اشفتگی|اشغالدان|اشتی' \ + ur'|اشفتگی|اشپزخانـه|اشپز|اشامـیدنی|اشامـیدن|اشامـه|اشامنده|اشام|اشاب|اسیمـه|اسیمگی|اسیب‌زدن' \ + ur'|اسیب‌دیده|اسیب|اسیـا|اسیـاسنگ|اسیـازنـه|اسیـاچرخ|اسیـابان|اسیـاب|اسیـا|اسوده‌خاطر|اسوده‌حال|اسوده|اسودن' \ + ur'|اسودگی|اسمون|اسمانـه|اسمان‌سنجی|اسمان‌خراش|اسمانخانـه|اسمان|اسکاریس|اسفالت|استینـه|استرکاری' \ + ur'|استردوز|استانـه|اسپیرین|اسپرین|اسائی|اسا[یئ]یدن|اساینده|اسایشگاه|اسایش|اسان‌گیری|اچی' \ + ur'|ا|اسان|اژیرهوائی|اژیر|اژیـانـه|اژنگ|اژند|اژفنداک|اژدار|اژانس|ازیدن|ازیتا|ازوقه|ازمون‌گر|ازمون‌گاه|ازمون|ازموده' \ + ur'|ازمودن|ازمودگی|ازمندی|ازمند|ازمائی|ازمایـه|ازماینده|ازمایشی|ازمایشو|ازمایشگاه|ازمایشات|ازمایش|ازمابنده|ازما|ازگار' \ + ur'|ازرده|ازردن|ازردگی|ازرد|ازا|ازارنده|ازاررسان|ازاردهنده|ازار|ازادی‌خواه|ازادوار' \ + ur'|ازاده|ازادمنش|ازادمرد|ازادگی|ازادگان|ازادکامـی|ازادانـه|ازاد|اریـانا|اریـان|اریـا|ار[و]غ' \ + ur'|ارواره|ارنولد|ارنگ|ارنج|ارنائوت|ارمـینا|ارمـین|ارمـیس|ارمـیده|ارمـیدن|ارمـیدگی|ارمـیچر|ارمـه|ارمان‌شـهر|ارماگدون|ارگون' \ + ur'|ارکاد|ارشیو|ارشیتکت|ارشـه|ارشام|ارش|ارستن|ارسان|ارژانتین|ارزومندانـه|ارزومند|ارزوخواه|ارزو|ارتین|ارتیشو|ارتیست' \ + ur'|ارتور|ارتمـیس|ارتروز|ارا[یئ]یدن|ارایـه‌گر|ارایشی|ارایشگر|ارایشگاه|ارایش|ارامـیدن|ارامگاه|ارامگان|ارام‌' \ + ur'|ارامش|ارامانیدن|ارام|اراسته|اراستن|اراستگی|ارارات|اراء|اذین|اذرین|اذرنوش|اذرنگ|اذرگون|اذرشـهر|اذرسنجی' \ + ur'|اذرروز|اذرخش|اذربرزین|اذربایجان|اذر|ادینـه|ادیس|ادونیس|ادنیس|ادمـی‌گرا|ادمـیزاد' \ + ur'|ادمـیرال|ادمـیت|ادم‌گرا|ادم‌کش|ادمک|ادم‌فروش|ادم‌ربا|ادم‌خوار|ادرنالین|ادرس|ادامس|اداب|اخوندک|اخوند' \ + ur'|اخور|اخرین|اخرسالار|اخرزمان|اخرت‌شناسی|اخرت|اخرالدواء|اخرالامر|اخر|اختن|احاد|اچمز|اچارکشی|اچاردار|اچار|اجیل|اجودان' \ + ur'|اجرنما|اجرکاری|اجرچین|اجرپز|اجان|اثار|اتیـه|اتیکا|اتیسا|اتلیـه|اتشین|اتش‌ناک|اتش‌گیره|اتش‌گیر' \ + ur'|اتش‌گون|اتش‌گرفتن|اتش‌گاه|اتشکده|اتش‌کار|اتش‌فشان|اتش‌زنـه|اتش‌زدن|اتش‌زا|اتش‌دان|اتش‌خوار|اتش‌خانـه|اتش‌پاره|اتش‌بان|اتش‌بازی|اتش‌بار' \ + ur'|اتش|اتریوم|اتروپین|اتابای|اپولو|اپوستروف|اپاندیسیت|اپاندیس|اپارتمان|اپارتاید|اپارات|ابیـار|ابونـه|ابونمان' \ + ur'|ابها|ابنوس|اب‌نمک|اب‌نما|اب‌[ن]شدنی|ابنبات|ابمـیوه‌گیر|اب‌مـیوه|اب‌لیمو|ابله‌کوب|ابله‌رو|ابگینـه|ابگیر|ابگونـه|ابگون‌ساز' \ + ur'|اب‌گوشت|اب‌گرمکن|اب‌گردان|اب‌گذر|اب‌گاه|اب‌کش|اب‌کانـه|اب‌کامـه|اب‌کار|اب‌فشان|ابغوره|ابشی|ابشور|اب‌شنگولی|ابشش|اب‌شدنی' \ + ur'|ابش‌خور|ابشتگاه|ابشار|ابسوار|ابسه|ابسکون|ابستن|ابسالان|اب‌سال|ابزی‌گاه|ابزی‌دان|ابزی|ابریزگاه|ابریزگان|ابریزش' \ + ur'|ابریز|ابرومند|ابروریزی|ابرنگ|ابرفت|ابراهه|ابراهک|ابراه|ابدیده|ابدزدک|ابدانک|ابدان|ابداری|ابدارخانـه|ابدارچی' \ + ur'|ابدارباشی|ابدار|اب‌خیز|ابخوری|ابجی|ابجوفروشی|ابجوساز|ابجوساختن|ابجو|ابتین|ابتنی|اب‌پنیر|اگهی' \ + ur'|اب‌پاش|اب‌بها|اب‌بند|اب‌باز|اب‌انبار|ابان|اباژور|اباده|اباد|ابادسازی|ابادان|اباد|اباء' # first charcter should be آ # removed ان for [[ان بی سی]] # match ZWNJ also as a space or optional wordsWithA = wordsWithA.replace(ur"\u200c", u'[\u200c ]?') PresentVerbsWithA = \ ur'ارا|ارام|ارامان|ارای|ازار|ازما|ازمای|اسا|اسای|اشام|اشوب|اغار|اغاز|افرین|اکن|اگن|الای' \ + ur'|امرز|اموز|اموزان|امـیز|اهنج|اور|اویز' PastVerbsWithA = \ ur'اراماند|ارامـید|ارمـید|ازرد|ازمود|اشامـید|اشفت|اشوبید|اغازید|اغشت|افرید|اکند|اگند|الود' \ + ur'|امد|امرزید|اموخت|اموزاند|امـیخت|اهیخت|اورد|اویخت' needsNasb = \ ur'اتفاقا|الزاما|لزوما|یقینا|قطعا|حتما|قاعدتا|طبیعتا|طبعا|قهرا|جدّا|حقیقتا|واقعا|مطمئنا|واضحا|مسلما|تماما|کاملا' \ + ur'|عینا|اکیدا|مطلقا|دقیقا|مستقیما|اصولا|اصلا|اصالتا|نسبا|نسبتا|تقریبا|حدودا|معمولا|قانونا|شرعا|اخلاقا|خلقا|احتمالا' \ + ur'|استثنائا|اساسا|کلّا|جزئا|مجموعا|جمعا|اجماعا|شدیدا|نـهایتا|اقلا|اکثرا|غالبا|عمدتا|ندرتا|بعضا|گاها|صریحا|صراحتا|عموما' \ + ur'|اختصاصا|خصوصا|مجملا|اجمالا|اختصارا|مختصرا|مشروحا|ظاهرا|باطنا|عمـیقا|ذاتا|فطرتا|جسما|ابتدائا|مقدمتا|بدوا|بعدا|قبلا' \ + ur'|جدیدا|سابقا|اخیرا|ابدا|عمرا|تلویحا|علنا|حضورا|غیـابا|نیـابتا|لطفا|اجبارا|اختیـارا|عالما|عمدا|عامدا|تعمدا|متعمدا|عادتا' \ + ur'|مستقلا|احتیـاطا|احیـانا|غفلتا|سهوا|اشتباها|عاجلا|عجالتا|مرتجلا|ارتجالا|سریعا|فورا|دا[یئ]ما|ضرورتا|نقدا|منحصرا|صرفا|دفعتا' \ + ur'|کرارا|مکررا|مجددا|مرتبا|مستمرا|متواترا|تدریجا|تصادفا|عملا|فعلا|موقتا|ضمنا|نتیجتا|نوعا|اصطلاحا|جسارتا|بالا ?غیرتا|م[وؤ]کدا' \ + ur'|ذیلا|شخصا|مشترکا|مفصلا|رسما|ترجیحا|قلبا|ر[اأ]سا|تو[اأ]ما|متناوبا|متوالیـا|متقابلا|متعاقبا|متّ?فقا|مثلا|فرضا|ایضا|مضافا' \ + ur'|مصرّ?ا|ارفاقا|انصافا|جهارا|طولا|متدرجا|غانما|احتراما|ناچارا|سفارشا|تلفنا|زبانا|کتبا|شفاها|چهارما|ثانیـا|ثالثا' \ + ur'|رابعا|خامسا|سادسا|سابعا|ثامنا|تاسعا|عاشرا|مخصوصا' HamzehZam = \ ur'امـیرالمومنین|مومن|رویـا|فواد|موذن|مودب|موخر|مواخذه|مولف|موثر|مونث|موکد|موسس(?! خورناتسی)|سوال|موسسه' # for[[ران مودی]]removedمودی HamzehZam = HamzehZam.replace(ur'\u0648', ur'وء?') HamzehNasb = \ ur'تاکید|تالیف|تاسیس|تاسیسات|تامل|تفال|تاهل|تامـین|تا[یئ]ید|تادیب|تاثیر|تاثر|تاثیرات|تاثیرگذار|تاجیل' \ + ur'|تاخر|تاخیر|توام|ماوا|مستاجر|مبدا|منشا|متاسفانـه|متاسف|متاثر|مساله|متاهل|خلا|ملا عام|رافت|ماخذ|مایوس|ماخوذ' \ + ur'|مامور|مامورین|ماموران|ماموریت|مامون|مانوس' # removed راس، تالم HamzehAtEnd = \ ur'اجزا|احشا|ارتجا|ارتقا|ازا|استثنا|استغنا|استقرا|استمنا|استهزا|اشبا|اشقیـا|اشیـا|اطبا|اطفا|اعتلا' \ + ur'|اغوا|افترا|اقتضا|امنا|انبیـا|انقضا|اولیـا|ماورا' # re املا-انشا-اعضا-امضا-انزوا-ابتلا-استعفا-اعلا-اعتنا بدون همزه متداولترند، ابدا مـی‌تواند با همزه یـا نتوین باشد درون نتیجه برداشته شد HamzehAtInside = {ur'سو': u'استفاده|تعبیر|تفاهم|برداشت', ur'ما': u'الشعیر', ur'ماورا': u'الطبیعه|النـهر'} AlefMaghsooreh = \ ur'یحیـا|حتا|خنثا|مبرا|مرتضا|مصطفا|موسا|مجتبا|عیسا|عظما|علارغم' # removed اولا- الا colorsNames = \ ur'زرد|قرمز|آبی|سفید|سیـاه|بنفش|سرخ|گلگون|ازرق|ابیض|نارنجی|توسی|کبود|ارغوانی|سورمـه‌ای|سپید|مشکی|کرم|قهوه‌ای|سبز|طلا[یئ]ی' persianNumbers = \ ur'یک|دو|سه|چهار|پنج|شش|هفت|هشت|نـه|ده|یـازده|دوازده|سیزده|چهارده|' \ + ur'پانزده|شانزده|هفده|هجده|نوزده|بیست|سی|چهل|پنجاه|شصت|هفتاد|هشتاد|نود|صد|هزار' addToAbad = ur'گلون|افضل|رقی|خیر|دل|حاجی|سید|مبارک|گنج|نـهنگ|چنگ|' \ + ur'سرخ|جنگل|خرم|خونی|دولت|به|نیـاز|حفظ|عیش|نجم|بلاش|شیـار|' \ + ur'فتح|فضل|خدر|ساق|کج|زین|اسلام|بالش|پارس|اسکل|یـاخچی|مـهندس|قوژد' firstNameComplex = { ur'حمـید|احمد|محمود': u'رضا', ur'خدا': ur'بنده|داد', ur'امـیر': ur'علی|حسین|محمد|رضا|مـهدی|عباس', ur'محمد': ur'حسین|رضا|مـهدی|جواد|باقر|کاظم|حسن|علی|امـیر|طاها|هادی|وحید|حمـید', ur'علی': ur'رضا|محمد|اصغر|اکبر|قلی', } complexes = { # اسم خاص # اسم مرکب # فعل # صفت مرکب # 'با': u'پرستیژ|ابهت|احساس|اخلاق|ادب|ارزش|استعداد|استقامت|اصالت|اقتدار|اهمـیت|تدبیر|تربیت|تسلط|تعصب|تقوی', # 'باقی|ته': u'مانده', bug > باقی مانده بود- ته مانده بود. # طبق بندهای شماره .. # 'طبق|زمان': u'بند', # 'مادر||برادر|فرزند|پدر': u'خوانده', # bug > وی پدر خوانده شد.(پدر صدا زده شد) ur'ویکی': u'پدیـا|مدیـا|انبار|واژه|نبشته|خبر|کتاب|داده|دیتا|سفر|تراول|دانشگاه', ur'ایده': u'آل', ur'سخت|نرم|پای|جنگ|نوشت|بد|ماشین': u'افزار', ur'جنگ': u'افروز', ur'پیـاده': u'روی|رو|نظام', ur'انسان|روان|گیـاه|زیست|جانور|نماد|زمـین|هوا|ریخت|خدا|جامعه|رفتار|فرهنگ|معرفت|زبان|کتاب|ستاره|اختر|شرق|اسلام|ریشـه|آسیب|باستان|حق': u'شناس', ur'بهره|نتیجه|فاصله|اندازه|مچ|رونق|دست|پا|پاچه|آبمـیوه|آتش|آمار|اوج|کشتی|رأی|رای|یـار|تصمـیم': u'گیر', ur'بهره': u'مند|کشی|دهی', ur'اوج': u'دهی', ur'آزاد|بد|نیک|مثبت|مصلحت': u'اندیش', ur'هم': u'اندیشی|ارزی|راهی|سانی|رزم|خانـه|نشین|سان|بند|مرز|سایـه|مسلک|زمان|معنی|گام', ur'گرم|نرم|سرد|جمع|خنک|خشک|مرطوب|ضرب|تقسیم|کم|سرگرم|خوشحال|ناراحت|سخت|روان|باز|زیبا|زشت|مصرف|تولید': u'کننده|کنندگی|کنندگان', ur'خود|درون|پیـه': u'سوز|خواه', ur'دل': u'افروز|آزار|آرا|آزرده|بریده|افسرده|ربا|سوز|خواه|گشا', ur'تفریق|افزایش|کاهش|ویرایش|کوزه|سفال|غارت|چپاول|صنعت|امداد|توطئه|حساب|افسون|ریخته': u'گر', ur'آهن': u'ربا', ur'طیف|امکان|اقتصاد|نور|زمان|عمق|گرما|فشار|قطر': u'سنج', ur'فیزیک|شیمـی|ریـاضی|تاریخ|قلم|کتاب': u'دان', ur'نام|اسم|سیـاهه|خود|فیلم‌نامـه|فیلمنامـه|کتاب|روان|نسخه': u'نویس', ur'بار|سرمایـه|تخم|کتاب|خواب': u'گذار', ur'شـهر': u'بانو|زاد|ناز|نوش', ur'اسد|اسماء?|اسم|امان|امر|امـیر|امـین|انصار|انعام|اهل|اولیـاء?|اکرم|باب|بدیع|برات|بقیة|بهاء?|جار|جند|حبیب|حجت|حزب|حفظ|حمد|خلق|خلیل|خیر|ذبیح|ذکر|رام|رحمت|رحم|رسول|روح|سیف|شمس|شکر|صدق|صدیق|عبد|عزت|عزیز|عین|فتح|فرج|فضل|قدرت|لطف|لعنت|نصرت|نصر|نظیر|نعمت|نور|هیبت|ولی|کلام|کلیم|ید|یوم': u'الله|اللهی', ur'مستند|هوا|روان|جریـان|کار|مجسمـه|ایمن|پیـاده|مقاوم|امن|ساده|بهینـه|مرتب|شبیـه|ویکی|پل|جاده|راه': u'ساز', ur'احترام|اختلاف|اضطراب|اعجاب|افتخار|بحث|بر|تحسین|ترحم|تعجب|تعصب|تنفر|ت[اأ]ثر|ت[اأ]سف|ت[اأ]مل|جالب|جدل|جنجال|حزن|حیرت|خفت|خوف|خیـال|چالش|دل|رعب|رقت|روح||شور|شوق|شگفت|طرب|عبرت|غرور|غم|فرح|ملال|مـهر|نشاط|نفرت|هراس|هوس|وحشت|ی[اأ]س': u'برانگیز|انگیز', ur'چهره|دور|تاریخ|خبر|روزنامـه|روز|لرزه': u'نگار', ur'خود|روان|پاک|چرک|دست|پشت|زیر|پا|داستان': u'نویس', ur'زود|آرام|آب|کله|آش|بخار': u'پز', ur'مـه|پیمان|یخ|سنگ|بت|صف': u'شکن', ur'خون': u'آشام|خوار|بار|گرم|سرد|بها', ur'شیطان|خدا|بت|خورشید|مـهر|آتش|یزدان|ایزد|گاو|خود|آفتاب|یکتا|پول|حق|مال|مـیهن|نژاد': u'پرست', ur'پا[یئ]ین|بالا|عقب|جلو|کنار|ساده|بزرگ|کوچک|عمـیق|رقیق|ضخیم|فهیم|گسترده': u'تر', ur'برگشت|انحنا|برش|انعطاف|مـهمان|امکان|تفکیک|تغییر|آسیب|تأثیر|دل|سازش|مـهاجر': u'پذیر|ناپذیر', ur'دانش': u'آموخته|پژوه|آموختگی', ur'بی': u'آلایش|ابهت|احترام|احساس|اختیـار|اخلاق|ادب|اراده|ارزش|استعداد|استقامت|اصالت|اعتماد|اعتبار|اقتدار|امان|امنیت|انتها|اهمـیت|بها|بو|تدبیر|تربیت|تسلط|تعصب|تقوی|توجه|ثبات|جنبه|حس|دریغ|دست و پا|دین|رنگ|روح|رویـه|سابقه|سیم|شرف|شعور|لیـاقت|مایـه|مبالات|مزد|مزه|مصرف|معرفت|معنی|مقدار|مورد|نتیجه|نزاکت|نـهایت|نیـاز|وجدان|پایـه|پرستیژ|پناه|پول|چاره|چیز|کار|دلیل|خبر', ur'مـی': u'دانم', ur'عرضه': u'کننده|کنندگان', ur'ابرو': u'کمان|قیطان', ur'ابله': u'گونـه', ur'ابن': u'الیوم|الوقت|السبیل|عباس', ur'اغراق|خشونت': u'آمـیز', ur'اجاق': u'کور|زاده|سوز', ur'اجل': u'برگشته', ur'اسفل': u'السافلین', ur'اطلاع': u'رسان|رسانی|دهی', ur'انگشت': u'نما|نشان|پیچ', ur'سپاس|نام': u'گزار', ur'گوشت|گیـاه|علف|شیر': u'خوار', ur'آدم': u'برفی|فروش|ربا|خوار', ur'آب': u'لمبو|تنی', ur'آتشین': u'پنجه', ur'ریش|سنگ|قلم': u'تراش', ur'آزرده': u'جان', ur'آسوده': u'خاطر|وجدان', ur'آسیمـه': u'سر', ur'آش': u'دهن|خور|پز', ur'آشفته': u'سامان|دماغ|روز', ur'آکنده': u'گوش|پهلو', ur'آلاخون': u'والاخون', ur'آمد': u'نیـامد|شد', ur'باب': u'الحوائج', ur'باد': u'نشسته|گرفته', ur'بار': u'خاطر', ur'بالا|پایین|پائین': u'تنـه', ur'برنامـه': u'نویس', ur'برنامـه|طرح|بتون': u'ریز', ur'بزرگ': u'سال|مرد', ur'بزن': u'دررو|بهادر', ur'بد|خوش': u'سیرت|اخلاق|تراش|ترکیب|ریخت|ادا|استیل|اندام|بو|بینانـه|بینی|پخت|برخورد|یمن|خوراک|خیم|رکاب|حال|مزه|حساب|پوش|اقبال|قلق|منظر|نام|نما', ur'بد': u'انجام|پیله|خوی|عنق|کاره|گمان|گوهر|لگام|مسب|مست|مـهر', ur'بن': u'بست', ur'به': u'غایت', ur'حمله|بهره|پیشـه|شعله|طاعت|طالع': u'ور', ur'بین': u'النـهرین|الملل|الممالک', ur'پاچه': u'ورمالیده', ur'تکه|پاره|آتش|آهن|جگر|چهار': u'پاره', ur'ترویج|امداد|جهاد': u'گران|گر', ur'جهان|خدا|سود|شفا|نیرو|گرما|سرما': u'بخش', ur'پاک': u'نفس|سرشت|دامن|سیرت|منش|دیده', ur'پالان': u'سا[یئ]یده|دوز', ur'پراگنده|تاریک|شکسته|آشفته|آزرده|آسوده|بد|خوش|خونین|سیـاه|نازک': u'دل', ur'پری': u'نژاد|چهر', ur'نیک|پست': u'فطرت', ur'پی': u'گم|گرد|فراخ|سپید|نوشت', ur'پیچ': u'واپیچ|پیچ', ur'سفید|سیـاه|قهوه‌ای|قرمز|زرد|سبز|بنفش|گلگون|سرخ|پیروزه|مشک|نیل|مشکین': u'فام', ur'پیش': u'مرگ|کسوت', ur'تازه': u'وارد|خط|نفس|کار', ur'تام': u'الاختیـار', ur'خوش|زشت|ترش': u'رو', ur'ترگل': u'ور گل', ur'تکه': u'تکه', ur'تن': u'فروش|آسان|آرا|تن|پرور', ur'تند': u'خو|خوی', ur'تنگ': u'چشم', ur'تی': u'تیش', ur'پا|تن|زیر|سبز|سرخ|قرمز': u'پوش', ur'تیره': u'روز', ur'جامع': u'الشرایط|الاطراف', ur'جان': u'سخت|جانی', ur'یدک|فرو|نسل|آدم|ویروس|نقشـه|سر|آب|آچار': u'کش', ur'کشتی|گرده|دشت|نگه|دید|زمـین|جنگل|دروازه': u'بان', ur'چابک': u'سوار|دست', ur'نقاره|چاپ': u'چی', ur'چرب': u'زبان|ترازو', ur'چشمـه': u'چشمـه', ur'چل': u'کلید|تاج|تکه', ur'ناقاره|چوبک|دف|دمبک|ساز|نی|سنتور|تار|گیتار|ارگ': u'زن', ur'چیره': u'دست', ur'پول|فنگ|قالی|ظرف|خشک|لباس': u'شو[ئی]ی', ur'چیز': u'فهم', ur'حرف': u'شنو', ur'حق': u'السکوت|التدریس|الزحمـه', ur'حکیم': u'باشی', ur'حرام|حلال': u'زاده', ur'حیرت': u'زده', ur'حیرت|نام|مقام|یـاد|خواب|درد|شگفت|جمع': u'آور', ur'': u'زنک', ur'خام': u'طمع|طبع', ur'خشک': u'سر', ur'خنده': u'رو|خریش', ur'خواجه': u'سرا|تاش', ur'سگ|مرغ|خوک': u'دانی', ur'خونین': u'جگر|چشم|شـهر', ur'دایم': u'الخمر', ur'دائم': u'الصوم|الخمر', ur'درشت': u'خو', ur'دست': u'نویس|خوش|پاچه|چین|آورد', ur'دم': u'کلفت', ur'دندان': u'گرد', ur'دودوزه': u'باز', ur'ذوات': u'الارحام|الاذناب', ur'ذوی': u'القربی|الاوتار|العقول', ur'ذی': u'نفع|صلاحیت|فقار|ربط|قیمت|شعور|علاقه|حیـات|فن|روح|عقل|حق', ur'چشم|بار|بر|پس|تیر|رو|زیر|غلط': u'انداز', ur'رای': u'دهنده|دهندگان', ur'راست': u'راستکی', ur'رحمت': u'العالمـین', ur'رسم': u'الخط', ur'رقیق': u'القلب|الفکر', ur'رنگ': u'وارنگ', ur'اندود': u'کاری', ur'سنگ|ریز|دانـه|تک|یک|بزرگ|رنگ': u'دانـه', ur'رو[یئ]ین|پاد|نرم|سخت': u'تن', ur'ریش': u'ریش', ur'رئیس': u'الوزراء|الرؤسا', ur'تصویب|کار|اجازه|تکذیب|شب|پایـان|اساس|آ[یئ]ین': u'نامـه', ur'زنگی': u'مزاج', ur'زوار': u'دررفته', ur'زیست': u'محیط|بوم', ur'سابق|اخیر|فوق|لازم': u'الذکر', ur'سابقه': u'سالار', ur'سبک': u'مغز|سنگ|عنان|روح|لقا|سایـه|سنگین|دست', ur'سربه': u'مـهر', ur'سریع': u'السیر|الانتقال', ur'سست': u'زخم|رگ|ریش|عنصر', ur'سنگ': u'فرش', ur'دو|سه|چهار': u'پایـه', ur'سیـاه': u'مست|سوخته|چرده', ur'': u'چاک', ur'شب': u'رنگ|پره|اداری', ur'شبانـه': u'روزی', ur'شکسته': u'ناخن|مزاج', ur'شلم': u'شوربا', ur'شوخ': u'طبع|رو|دیده|چشم', ur'شوم|نیک|بلند|بد': u'اختر|اقبال', ur'شوی': u'دیده', ur'شیرین': u'عقل|دهن', ur'صد': u'شاخ', ur'قتل|بار': u'عام', ur'صف': u'آوار', ur'ضرب': u'المثل|العجل', ur'طبقه|زمان|درجه|رده|رتبه|دسته|جمله|تقسیم|بسته|آرماتور|اسکلت|امتیـاز|بخش|جدول|جمع|جناح|رنگ|ساز|سایز|سرهم|سطح|شرط|شکم|فاز|فصل|قاب|پارتیشن|چشم|کادر|کمر|گاو|نیم': u'بند', ur'طوطی': u'وار', ur'طویل': u'المدت', ur'طی': u'الارض', ur'هنر|عاشق': u'پیشـه', ur'عالی': u'نسب', ur'عام': u'المنفعه', ur'عدیم': u'النظیر', ur'عقب': u'گرد|نشینی', ur'علی': u'البدل', ur'عیـال': u'وار', ur'غلط': u'غلوط', ur'فارغ': u'الاکناف|التحصیل', ur'فراخ': u'رو|شکم|بال|کام|دیده|سخن|آهنگ|دست|آستین|ابرو|روزی', ur'فرخ': u'لقا|دیم|فال|پی', ur'فرمان': u'روا|بر', ur'فرنگی': u'مآب', ur'غیر': u'قابل|متعهد|اخلاقی|شرعی|انسانی|اصولی|مجاز|حضوری|دولتی|نظامـی|انتفاعی|منتظره|قانونی|معمولی|ممکن|رسمـی|فعال|نفتی|منقول|ارادی|جایز|طبیعی|عادی|عمد|لازم|مسئول|عادلانـه|خودی|عاقلانـه|کافی', ur'وفا|فره|نیـاز|جفا|خرد|غیرت|باور|ارزش|نعل|درد|علاقه': u'مند', ur'فرو': u'نـهادن|داشت|گذاشت|مایـه|بست|پاشی|پاشیده', ur'فوق': u'الذکر', ur'خارق|فوق': u'العاده', ur'کیلو|سانتی|مـیلی|دسی|نانو|ولت': u'متر|آمپر|گرم', ur'قاچ': u'قاچ', ur'قافله': u'سالار', ur'قایم': u'الزاویـه', ur'قدسی': u'مآب', ur'قره': u'قاطی', ur'قریب': u'الوقوع', ur'کاه|قطره|دله|آفتابه': u'دزد', ur'قوی': u'پنجه', ur'قیمـه': u'قیمـه', ur'کاسه': u'یکی|سیـاه|لیس', ur'کج': u'نـهاد|خلق|کلاه', ur'کلاه': u'گوشـه|گذار', ur'کله': u'معلق|خشک|گنده|خر|شق|پوک', ur'زبانـه|زمـین|ماشین|فرمان|کمان|کنگره|گوشـه|دامنـه|خانـه|پول|مقام|آ[یئ]ینـه': u'دار', ur'کهن': u'سال|دیـار', ur'کینـه': u'توز|ورز', ur'گران': u'مغز|سایـه|قدر|رکاب|سرشت|پایـه|قیمت|روح|سنگ|جان|سر|فروش', ur'گربه': u'گون|کوره', ur'گشاده': u'رو|دست', ur'گل': u'چهره|ریزان|ریز|گون|باران|آرا|اندام|برگ', ur'گلوله': u'باران', ur'ناهم|هم|گندم': u'گون', ur'لازم': u'الوصول|الاجراء', ur'مشکوک|معلوم|مجهول|فارغ': u'الحال', ur'لت': u'لت|انبان|انبار', ur'لسان': u'الغیب', ur'مالک': u'الرقاب', ur'ماه': u'طلعت', ur'مشغول': u'الذمـه', ur'معظم': u'له|القدر', ur'ملی|همجنس|زمـینـه': u'گرا', ur'مـیرزا': u'قلمدان|قشمشم|بنویس', ur'ناخن': u'خشک', ur'نازک': u'نی|نارنجی|خیـال', ur'جهان|نافه': u'گشا', ur'ندید': u'بدید', ur'نظریـه|رویـا|رؤیـا': u'پرداز', ur'نقشـه|وزنـه|بهره|کلاه': u'بردار', ur'نق': u'نقو', ur'نگون': u'طشت|بخت', ur'نیک': u'روز|انجام|پی|اختر|بخت', ur'نیم': u'ته|بسمل', ur'هرکن': u'پرکن', ur'همایون': u'فال|آثار|بخت', ur'همـه': u'کاره|جانبه', ur'هیچ': u'کاره|گاه|یک|کس|کدام', ur'ول': u'خرج|معطل', ur'یکه': u'شناس|بزن|سوار|تاز', ur'ابجد': u'خوان', ur'ابر': u'آلود|قدرت|ابزار', ur'ابو': u'العجب|الکلام|الهول', ur'اولو': u'الالباب|الامر|العزم', ur'حسب|صاحب|واجب': u'الامر', ur'گل|آذر': u'گون', ur'آزاد': u'مرد|وار', ur'باز': u'خرید|خواست|دید|بین', ur'بر': u'هم|آشفتگی|آشفته|پایی', ur'بلند': u'آوازه|پایـه', ur'آتش': u'بس|نشان|سوزی|افروز|افکن|افزار', ur'پا': u'برجا||بست|پتی|کار', ur'پایـه|بنیـان': u'گذار|گذاری', ur'پر': u'ابهام|ابهت|اتلاف|ادا|ادویـه|ازدحام|استرس|استقامت|اشک|برخورد|ترانـه|تردد|ترشح|تشبیـه|تصادف|تعصب|تقلب|تلاش|تملق|شور', ur'کم': u'محل|بضاعت|کم|یـاب', ur'پر|کم': u'نظیر|کار|تعداد|اشتباه|اشکال|اهمـیت|تحرک|تحول|ترافیک|تراکم|تقاضا|تکرار|تنش|تنوع|رو|آب', ur'تنگا': u'تنگ', ur'تیز': u'پا|دست|دندان|هوش|بین', ur'چادر|تخت|زاغه|شـهر|ته|آب|کاخ|پایتخت|یکجا|ییلاق': u'نشین', ur'چهار': u'شانـه', ur'ویروس': u'شناس|یـاب', ur'یـاد': u'داشت|دهی', ur'یـار': u'کشی', ur'ی[اأ]س': u'آلود', ur'حاضر': u'جواب|یراق', ur'خرد': u'سال', ur'دو': u'برجی|تخمـه|سره|قلو|به‌شک', ur'ذو': u'الجلال|العرش|القدر|القوافی|اللسانین|المجد|المکارم|المن|المناقب|المنن|النور|الوجهین|جسدین', ur'رنگا': u'رنگ', ur'رو': u'سفید|سیـاه|باز', ur'قهوه|نگار|آبدار|گل|کتاب': u'خانـه', ur'روز': u'افزون|انـه', ur'زود': u'باور', ur'شاد': u'روان|کام|مان|مانـه', ur'فرا': u'خور|روی', ur'کد': u'خدا|بانو', ur'گردا': u'گرد', ur'لا': u'ابالی|جون|کردار|مذهب|مروت|یتغیر|یتناهی|یزال|یعقل', ur'نا': u'جوانمرد|خودآگاه|نجیب|امـید|آزموده|آشنا|آگاه|برابر|تمام', ur'ایمن|پیـاده|مقاوم|امن|ساده|بهینـه|مرتب|آماده|رها|آگاه|زیبا|یکسان|روان|ذخیره|استاندار|متمایز|جدا|شخصی|انبوه|خصوصی': u'سازی', } # ----------------------------------------Wrong dictations----------------------- forReplace = { # 'مـیسیسیپی': u'مـی‌سی‌سی‌پی', # 'هاوی': u'حاوی', ممکن هست اسم خاص باشد # 'سوماً': u'سوم', # 'سوما': u'سوم', # 'دوماً': u'دوم', # 'دوما': u'دوم', # 'جانا': u'جانی', باگ درون [[جانا رودین]] # 'طوسی': u'توسی', خواجه نصیرالدین طوسی را بـه تبدیل مـی کرد # برپایـه http:#www.persianacademy.ir/fa/pishvand.aspx # بدل از تنوین ur'به شخصه': u'بشخصه', ur'به‌شخصه': u'بشخصه', ur'به عینـه': u'بعینـه', ur'به‌عینـه': u'بعینـه', ur'احمدی نژاد': u'احمدی‌نژاد', ur'جابه جا': u'جابه‌جا', ur'جا بـه جا': u'جابه‌جا', ur'جا به‌جا': u'جابه‌جا', ur'بی بی سی': u'بی‌بی‌سی', ur'اف بی آی': u'اف‌بی‌آی', ur'مـی سی سی پی': u'مـی‌سی‌سی‌پی', ur'ویژه‌گی': u'ویژگی', ur'دایره‌المعارف': u'دایرةالمعارف', ur'دایره المعارف': u'دایرةالمعارف', ur'تأئید': u'تأیید', ur'تائید': u'تأیید', ur'بقیـه‌الله': u'بقیةالله', ur'بقیـه الله': u'بقیةالله', ur'بقیة الله': u'بقیةالله', ur'دگمـه': u'دکمـه', ur'وحله': u'وهله', ur'نقطه‌نظر': u'دیدگاه', ur'ناچاراً': u'به‌ناچار', ur'ناچارا': u'به‌ناچار', ur'منیت': u'منی', ur'منیٔت': u'منی', ur'فرآیند': u'فرایند', ur'فرآیندها': u'فرایندها', ur'کارآیی': u'کارایی', ur'ملاحضه': u'ملاحظه', ur'ملیون': u'مـیلیون', ur'ملیـارد': u'مـیلیـارد', ur'مطمعن': u'مطمئن', ur'مرهمت': u'مرحمت', ur'مرحم': u'مرهم', ur'محصوب': u'محسوب', ur'مذبور': u'مزبور', ur'متعصفانـه|متاصفانـه': u'متأسفانـه', ur'متغییر': u'متغیر', ur'لشگر': u'لشکر', ur'لحجه': u'لهجه', ur'گاهاً': u'گاهی', ur'گاها': u'گاهی', ur'کهکیلویـه': u'کهگیلویـه', ur'قائله': u'غائله', ur'فارق‌التحصیل': u'فارغ‌التحصیل', ur'علاالدین': u'علاءالدین', ur'علم‌شنگه': u'الم‌شنگه', ur'غلطاندن': u'غلتاندن', ur'ظبط': u'ضبط', ur'طنبور': u'تنبور', ur'طپش': u'تپش', ur'ضمـینـه': u'زمـینـه', ur'زخامت|ذخامت': u'ضخامت', ur'زخیم|ذخیم': u'ضخیم', ur'صحفه': u'صفحه', ur'سفارشاً': u'سفارشی', ur'سفارشا': u'سفارشی', ur'سرلشگر': u'سرلشکر', ur'سپاسگذار': u'سپاسگزار', ur'خبرگذار': u'خبرگزار', ur'ساتع': u'ساطع', ur'زنده‌گی': u'زندگی', ur'زباناً': u'زبانی', ur'زبانا': u'زبانی', ur'رهبریت': u'رهبری', ur'در باره': u'درباره', ur'دوئیت': u'دوگانگی', ur'داوطلبین': u'داوطلبان', ur'خوشنود': u'خشنود', ur'خوبیت': u'خوبی', ur'خوانواده': u'خانواده', ur'خواستگاه': u'خاستگاه', ur'خرشید': u'خورشید', ur'خردن': u'خوردن', ur'خانند': u'خوانند', ur'خابیدن': u'خوابیدن', ur'حظور': u'حضور', ur'حظرت': u'حضرت', ur'حدلامکان': u'حتی‌الامکان', ur'حاظر': u'حاضر', ur'چهارماً': u'چهارم', ur'چهارما': u'چهارم', ur'چارشنبه': u'چهارشنبه', ur'جاناً': u'جانی', ur'توجیح': u'توجیـه', ur'توضیع': u'توزیع', ur'تلوزیون': u'تلویزیون', ur'تضاهر': u'تظاهر', ur'ترجیـه': u'ترجیح', ur'پنچ': u'پنج', ur'پزشگی': u'پزشکی', ur'پرفسور': u'پروفسور', ur'پاتوغ': u'پاتوق', ur'بی‌مـهابا': u'بی‌محابا', ur'بنیـانگزار': u'بنیـانگذار', ur'بلقور': u'بلغور', ur'بلاخره': u'بالاخره', ur'برخواستن': u'برخاستن', ur'برعلیـه': u'علیـه', ur'برخواست': u'برخاست', ur'بدیت': u'بدی', ur'باطلاق': u'باتلاق', ur'بازرسین': u'بازرسان', ur'بارگزار': u'بارگذار', ur'باجناق': u'باجناغ', ur'باباقوری': u'باباغوری', ur'آروق': u'آروغ', ur'انظباط': u'انضباط', ur'التفاط': u'التفات', ur'افضل‌تر': u'بهتر', ur'افسنطین': u'افسنتین', ur'اعلم‌تر': u'داناتر', ur'اطو': u'اتو', ur'اطراق': u'اتراق', ur'اطاق': u'اتاق', ur'اصطرلاب': u'اسطرلاب', ur'ارتقاع': u'ارتقا', ur'اختاپوث': u'اختاپوس', ur'ابولفضل': u'ابوالفضل', ur'امپراطور': u'امپراتور', ur'آزوقه': u'آذوقه', ur'ذکام': u'زکام', ur'بگیر و ببند': u'بگیر ببند', ur'ساز و کار': u'سازوکار', ur'جر و بحث': u'جربحث', ur'خوار و بار': u'خواربار', ur'احجام': u'حجم‌ها', ur'اقشار': u'قشرها', ur'لازم بـه ذکر است': u'لازم هست ذکر شود', ur'بدلیل': u'به دلیل', ur'آن‌را': u'آن را', ur'این‌را': u'این را', ur'هیـات': u'هیئت', ur'هیأت': u'هیئت', ur'رییسه': u'رئیسه', ur'رییس': u'رئیس', ur'مساله': u'مسئله', ur'مسأله': u'مسئله', ur'همـین جا': u'همـین‌جا', ur'همـینجا': u'همـین‌جا', ur'همـینطور': u'همـین‌طور', ur'همـین طور': u'همـین‌طور', ur'همان جا': u'همان‌جا', ur'همانجا': u'همان‌جا', ur'همان طور': u'همان‌طور', ur'همانطور': u'همان‌طور', ur'هیچکدام': u'هیچ‌کدام', ur'هیچ کدام': u'هیچ‌کدام', ur'هیچکس': u'هیچ‌کس', ur'هیچ': u'هیچ‌کس', ur'هیچیک': u'هیچ‌یک', ur'هیچ یک': u'هیچ‌یک', ur'هم‌دیگر': u'همدیگر', ur'آن چه': u'آنچه', ur'آن‌چه': u'آنچه', ur'چنان چه': u'چنانچه', ur'چنانچه': u'چنانچه', ur'چنان که': u'چنان‌که', ur'چنانکه': u'چنان‌که', ur'ئیدروژن': u'هیدروژن', ur'بعضن': u'بعضاً', ur'غالبن': u'غالباً', ur'کاملن': u'کاملاً', ur'احتمالن': u'احتمالاً', ur'اصلن': u'اصلاً', ur'اشتباهن': u'اشتباهاً', ur'منشاء': u'منشأ', ur'مبداء': u'مبدأ', } persianGlyphs = { # these two are for visually available ZWNJ #visualZwnj ur'\u200cه': u'ﻫ', ur'ی\u200c': u'ﻰﻲ', ur'أ': u'ﺄﺃﺃ', ur'آ': u'ﺁﺁﺂ', ur'إ': u'ﺇﺈﺇ', ur'\u0627': u'ﺍﺎ', ur'ب': u'ﺏﺐﺑﺒ', ur'پ': u'ﭖﭗﭘﭙ', ur'ت': u'ﺕﺖﺗﺘ', ur'ث': u'ﺙﺚﺛﺜ', ur'ج': u'ﺝﺞﺟﺠ', ur'چ': u'ﭺﭻﭼﭽ', ur'ح': u'ﺡﺢﺣﺤ', ur'خ': u'ﺥﺦﺧﺨ', ur'د': u'ﺩﺪ', ur'ذ': u'ﺫﺬ', ur'ر': u'ﺭﺮ', ur'ز': u'ﺯﺰ', ur'ژ': u'ﮊﮋ', ur'س': u'ﺱﺲﺳﺴ', ur'ش': u'ﺵﺶﺷﺸ', ur'ص': u'ﺹﺺﺻﺼ', ur'ض': u'ﺽﺾﺿﻀ', ur'ط': u'ﻁﻂﻃﻄ', ur'ظ': u'ﻅﻆﻇﻈ', ur'ع': u'ﻉﻊﻋﻌ', ur'غ': u'ﻍﻎﻏﻐ', ur'ف': u'ﻑﻒﻓﻔ', ur'ق': u'ﻕﻖﻗﻘ', ur'ک': u'ﮎﮏﮐﮑﻙﻚﻛﻜ', ur'گ': u'ﮒﮓﮔﮕ', ur'ل': u'ﻝﻞﻟﻠ', ur'م': u'ﻡﻢﻣﻤ', ur'ن': u'ﻥﻦﻧﻨ', ur'ه': u'ﻩﻪﻫﻬ', ur'هٔ': u'ﮤﮥ', ur'\u0648': u'ﻭﻮ', ur'ؤ': u'ﺅﺅﺆ', ur'ی': u'ﯼﯽﯾﯿﻯﻰﻱﻲﻳﻴ', ur'ئ': u'ﺉﺊﺋﺌ', ur'لا': u'ﻻﻼ', ur'لإ': u'ﻹﻺ', ur'لأ': u'ﻸﻷ', ur'لآ': u'ﻵﻶ', } def my_replace(match, word1, word2): match = match.group() return match.replace(word1, word2) def quotation(text): # این تابع زمانی گیومـه را بـه فارسی تیدیل مـی‌کند کـه در پاراگراف مورد نظر تعداد گیومـهٔ لاتین زوج باشد. lines = text.split(ur'\n') result = [] for i in range(0,len(lines)): line = lines[i] # رفع مشکل استفاده از ـً بـه جای گیومـه لاتین درون متن فارسی line = re.sub(ur'ا\"([ ]*[' + persianCharacters + ur'])', u'اً\\1',line) # ”“ تبدیل line = re.sub(ur'(^|[' + persianCharacters+ ur'\:>،»؛\s\n\}\]\.]+)“((?:\[\[|).*?['+ persianCharacters+ ur'\n]+?(?:\]\]|\.|\<|\:|))”(['+ persianCharacters+ ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # وارونـه ”“ تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)"((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|))"([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # وارونـه ”“ تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)”((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|))“([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # ‘’ تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)‘((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|))’([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # وارونـه ‘’ تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)’((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|))‘([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # ‚’ تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)‚((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|\{|\[|))’([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # „” تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)„((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|))”([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # << >> تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)\<\<((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|))\>\>([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) # (()) تبدیل line = re.sub(ur'(^|[' + persianCharacters + ur'\:>،»؛\s\n\}\]\.]+)\(\(((?:\[\[|).*?[' + persianCharacters + ur'\n]+?(?:\]\]|\.|\<|\:|))\)\)([' + persianCharacters + ur'،«؛\s\n\.\[\{]|$)', u'\\1«\\2»\\3',line) result.append(line) return ur'\n'.join(result) def dictationReplace(x,y,extensions,text): Regex=ur'(^|[^' + persianCharacters + ur'])(\s|\u200c|_|)(' + x + ur')(\s|_)('+ y + ur')(\s|\u200c|_|)(' + extensions + ur')(\n|[^' + persianCharacters + ur'])' text = re.sub(Regex,u'\\1\\2\\3\u200c\\5\\6\\7\\8',text) return text def complex_replace(txt, pat, w1, w2): def function(s): return s.group(1)+s.group(2).replace(w1, w2,1)+s.group(3)+s.group(4) txt=re.sub(re.compile(pat),function,txt) return txt def dictation(text): for i in complexes: if complexes.has_key(i): text = dictationReplace(i, complexes[i], ur'ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|', text) # for last name text = dictationReplace(personNames, ur'ی|یی|زاده|نیـا|گان|فر|نژاد|یـان|ی\u200cها|یـها' , ur'ی|', text) # for 'آباد's text = dictationReplace(personNames + ur'|' + addToAbad, ur'آباد', ur'زاده|نیـا|پور|گان|فر|نژاد|ی|یـان|ها|های|یی|هایی|ی\u200cها|یـها|' , text) # for first names for i in firstNameComplex: if firstNameComplex.has_key(i): text = re.sub(ur'(^|[^' + persianCharacters + ur']|\s|_)(' + i + ur')(\s|_)(' + firstNameComplex[i] + ur')(\s|_)($|[^' + persianCharacters + ur']|[' + persianCharacters + ur'])', u'\\1\\2\u200c\\4\\5\\6',text) # for colors text = dictationReplace(colorsNames, ur'فام|گون', ur'زاده|نیـا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|ی\u200cها|یـها|هایم|هایت|هایش|هایمان|هایتان|هایشان|', text) # for numbers text = dictationReplace(persianNumbers, ur'گانـه|ماهه', ur'زاده|نیـا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|', text) # wrong dictation for i in forReplace: if forReplace.has_key(i): text = re.sub(ur'(^|[^' + persianCharacters + ur'])(\s|\u200c|_|)(' + i + ur')(\s|\u200c|_|)($|[^' + persianCharacters + ur'])', u'\\1\\2' + forReplace[i] + u'\\4\\5',text) # کلماتی کـه آ دارند text = complex_replace(text, ur"(^|\s|_|«|»|\[|\(|\<|\>|\')("+ wordsWithA+ ur")(ی|ئی|یی|ٔ|)( |«|»|\.|،|_|\]|\s|\:|\)|\<|\>|؟|\'|\!|$)", u'\u0627', ur'آ') # بن مضارع کـه آ دارند text = complex_replace(text, ur"(^|\u200c|\s|_|«|»|\[|\(|\<|\>|\')(" + PresentVerbsWithA + ur")(م|ی|د|یم|ید|ند)( |«|»|\.|،|_|\s|\]|\:|\)|\<|\>|؟|\!|\'|$)" , u'\u0627', ur'آ') # بن ماضی کـه آ دارند text = complex_replace(text, ur"(^|\u200c|\s|_|«|»|\[|\(|\<|\>|\')(" + PastVerbsWithA + ur")(م|ی|د|یم|ید|ند)( |«|»|\.|،|_|\s|\]|\:|\)|\<|\>|؟|\!|\'|$)" , u'\u0627', ur'آ') # همزه ضم text = complex_replace(text, ur"(^|\s|_|«|»|\[|\(|\<|\>|\')(" + HamzehZam + ur")(‌ها|ها|ین|ان|ی|ئی|یی|ٔ|)( |«|»|\.|،|_|\s|\]|\:|\)|\<|\>|؟|\!|\'|$)" , u'\u0648', ur'ؤ') # همزه نصب text = complex_replace(text, ur"(^|\s|_|«|»|\[|\(|\<|\>|\')(" + HamzehNasb + ur")(ی|ئی|یی|ٔ|)( |«|»|\.|،|_|\s|\]|\:|\)|\<|\>|؟|\!|\'|$)" , u'\u0627', ur'أ') # همزه وسط کلمـه for i in HamzehAtInside: if HamzehAtInside.has_key(i): text = re.sub(ur"(^|\s|_|«|»|\[|\(|\<|\>|\')(" + i + ur')(| )(' + HamzehAtInside[i] + ur")(?= |«|»|\.|،|_|\s|\]|\:|\)|\<|\>|؟|\!|\'|$)" , u'\\1\\2ء\\4',text) # درون مورد افزودن یـا حذف همزهٔ پایـانی اجماعی وجود ندارد. # الف مقصوره text = re.sub(ur"(^|\s|_|«|»|\[|\(|\<|\>|\')(" + HamzehAtEnd + ur")(?= |«|»|\.|،|_|\s|\]|\:|\)|\<|\>|؟|\!|\'|$)",u'\\1\\2ء',text) text = complex_replace(text, ur"(^|\s|_|«|»|\[|\(|\<|\>|\')(" + AlefMaghsooreh + ur")(| )( |«|»|\.|،|_|\s|\]|\:|\)|\<|\>|؟|\!|\'|$)" , u'\u0627', ur'ی') # صفت+تر text = re.sub(ur"(^|\s|_|«|»|\]|\[|\(|\<|\>|\')(" + adjective + ur")( |_)تر(?= |«|»|\.|\[|\]|،|_|\s|\:|\)|\<|\>|؟|\!|\'|$)" , u'\\1\\2\u200cتر',text) # اسامـی رنگ‌ها (به‌عنوان صفت)+تر text = re.sub(ur"(^|\s|_|«|»|\]|\[|\(|\<|\>|\')(" + colorsNames + ur")( |_)تر(?= |«|»|\.|\[|\]|،|_|\s|\:|\)|\<|\>|؟|\!|\'|$)" , u'\\1\\2\u200cتر',text) text = re.sub(ur"به دست\u200cآورد", u'به دست آورد',text) # Solving a bug! def function(s): return s.group(1)+s.group(2)[:-1]+u'اً'+s.group(3) regex=ur"(^|[؛\s\n\.،«»\'\"\<\>؟])(" + needsNasb + ur')[' + NASB + ZAMM + ur']?([؛؟\s\n\.،«»\'\"\<\>]|$)' text=re.sub(regex,function,text, re.UNICODE) return text def normalizeZwnj(text): text = re.sub(ur"\u200c{2,}", ur"\u200c",text) # Clean ZWNJs after characters that don't conncet to the next letter text = \ re.sub(ur"([۰-۹0-9إأةؤورزژاآدذ،؛,\:«»\\/@#$٪×\*\(\)ـ\-=\|ء])\u200c" , u'\\1',text) # Clean ZWNJs before and after English characters text = re.sub(ur"\u200c([\w])", u'\\1',text) text = re.sub(ur"([\w])\u200c", u'\\1',text) # Clean ZWNJs before and after Persian characters text = re.sub(ur'\u200c([' + vowels + arabicIndicDigits + persianDigits + hamza + '])', u'\\1',text) text = re.sub(ur'([' + arabicIndicDigits + '])\u200c', u'\\1',text) text = re.sub(ur"([\w])\u200c", u'\\1',text) # Clean ZWNJs after and before punctuation text = re.sub(ur"\u200c([ء\n\s\[\]\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\|])", u'\\1',text) text = re.sub(ur"([\n\s\[\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\|])\u200c", u'\\1',text) # Clean ZWNJs before brakets which have sapce after\before them text = re.sub(ur"\u200c(\][\s\n])", u'\\1',text) text = re.sub(ur"([\n\s]\[)\u200c", u'\\1',text) return text def toStandardPersianCharacters(text): for i in persianGlyphs: text = re.sub(ur'[' + persianGlyphs[i] + ur']', i,text) text = normalizeZwnj(text) text = text.replace(ur"ك", ur'ک') # Arabic text = text.replace(ur"ڪ", ur'ک') # Urdu text = text.replace(ur"ﻙ", ur'ک') # Pushtu text = text.replace(ur"ﻚ", ur'ک') # Uyghur text = text.replace(ur"ي", ur'ی') # Arabic text = text.replace(ur"ى", ur'ی') # Urdu text = text.replace(ur"ے", ur'ی') # Urdu text = text.replace(ur"ۍ", ur'ی') # Pushtu text = text.replace(ur"ې", ur'ی') # Uyghur text = text.replace(ur"ہ", ur'ه') # Convert &#x06C1; to &#x0647; ہہہہ to ههه text = re.sub(ur"ە", u'ه\u200c',text) # Kurdish text = text.replace(ur"ھ", ur'ه') # Kurdish return text def applyOrthography(text): text = text.replace(ur"\r", ur'') # تمـیزکاری autoFormatter.js text = re.sub(ur"[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F\uFEFF]+", u'',text) text = re.sub(ur"[ \xA0\xAD\u1680\u180E\u2000-\u200D\u2028\u2029\u202F\u205F\u2060\u3000]+\n", u'\n',text) # تبدیل تب و فاصله ناول خط بـه هیچ چون مدیـاویکی آن را درون نظر نمـی‌گیرد #text = re.sub(ur"\n[\t\u00A0]+", u'\n',text) # تبدیل انواع فاصله‌ها بـه فاصله ساده text = re.sub(ur"[\u0020\u0085\u00A0\u180E\u2000-\u200A\u202F\u205F\u3000]", u' ',text) text = re.sub(ur"[\u0085]", u'',text) # http:#kb.mozillazine.org/Network.IDN.blacklist_chars text = re.sub(ur"[\u01C3\uFE15]", u'!',text) text = re.sub(ur"[\u02D0\u0589\u05C3\uA789]", u': ',text) text = re.sub(ur"[\u0338\u2044\u2215\u2571\u29F8\u3033\uFF0F]", u'/',text) text = re.sub(ur"[\u05F4]", u'"',text) text = re.sub(ur"[\u06D4\u0701\uFF0E\uFF61]", u'.',text) text = re.sub(ur"\u3014", u'(',text) text = re.sub(ur"\u3015", u')',text) # جایگزینی ۀ غیراستاندار+حرف بعدی بدون فاصله بـه ه+همزه+فاصله text = re.sub(ur"ۀ(?![\s\n])", u'هٔ ',text) # Replace ه followed by (space|ZWNJ|lrm) follow by ی with هٔ text = re.sub(ur"ه[\u200c\u200e\s]+ی([\s\n])", u'هٔ\\1',text) # Replace ه followed by (space|ZWNJ|lrm|nothing) follow by ء or with هٔ text = re.sub(ur"ه[\u200c\u200e\s]*[ءٔ]([\s\n])", u'هٔ\\1',text) # Replace هٓ or single-character ۀ with the standard هٔ text = re.sub(ur"(ۀ|هٓ)", u'هٔ',text) # Replace ه followed by ئ or ی, and then by ی, with ه\u200cای, example: خانـهئی becomes خانـه\u200cای text = re.sub(ur"ه\u200c[ئی]ی", u'ه\u200cای',text) # def for removing incorrect ZWNJs text = re.sub(ur"([\u200c\u200e])([\s\n])", u'\\2',text) text = re.sub(ur"([\s\n])([\u200c\u200e])", u'\\1',text) # فاصلهٔ پیش از واکه\u200cهای کوتاه اشتباه هست و به منظور جلوگیر از بـه هم چسبیدن کلمات فاصله و واکه جابجا حتما گردند. text = re.sub(ur'([' + persianCharacters + vowels + hamza+ ur'])(\s)([' + vowels + hamza + ur'])',u'\\1\\3\\2',text) # واکه\u200cهای کوتاه پشت سرهم نمـی\u200cآیند و یک حرف حتما بینشان فاصله باشد text = re.sub(ur'([' + vowels + hamza + ur']){2,}', u'\\1',text) text = re.sub(ur"ئء", ur'یء',text) # two hamzes after each other text = re.sub(ur"أء", ur'اء',text) # two hamzes after each other text = re.sub(ur"ؤء", ur'ؤ',text) # two hamzes after each other # .replace(ur"وء", ur'ؤ')#bug on سوء text = re.sub(ur"سؤ ?استفاده", ur'سوءاستفاده',text) # bug on سوءاستفاده و سوء # افزودن همزه text = re.sub(ur"درباره (ام|ات|اش|مان|تان|شان|ای)(\s|$)",u'درباره‌\\1\\2',text) # i به منظور جلوگیری از باگ احتمالی به منظور افزودن همزه بـه درباره #text = re.sub(ur"درباره\s", ur'دربارهٔ ',text) #text = re.sub(ur'صفحه(\s|)([' + persianDigits + ']+)(\n|\.|\,|\||\<)', u'صفحهٔ \\2\\3',text) # [[Special:PermaLink/15326391#افزودن همزه]] return text def complexVerbsApplyZwnj(text): for x in persianComplexPastVerbs: y = persianComplexPastVerbs[x] text = re.sub(ur'(^|[^' + persianCharacters + ur'])(' + x + ur') ?(مـی|نمـی|)( |\u200c|)(ن|)(' + y + ur')(م|ی|یم|ید|ند|ه|ن|)($|[^' + persianCharacters + ur'])', u'\\1\\2\u200c\\3\u200c\\5\\6\\7\\8',text) for x in persianComplexPresentVerbs: y = persianComplexPresentVerbs[x] text = re.sub(ur'(^|[^' + persianCharacters + ur'])(' + x + ur') ?(مـی|نمـی|)( |\u200c|)(ن|)(' + y + ur')(م|ی|د|یم|ید|ند|ن)($|[^' + persianCharacters + ur'])', u'\\1\\2\u200c\\3\u200c\\5\\6\\7\\8',text) return text def applyZwnj(text): text = re.sub(ur'(^|[^' + persianCharacters + ur'])(مـی|نمـی) ?' + persianPastVerbs + ur'(م|ی|یم|ید|ند|ه|)($|[^' + persianCharacters + u'])', u'\\1\\2\u200c\\3\\4\\5',text ) text = re.sub(ur'(^|[^' + persianCharacters + ur'])(مـی|نمـی) ?' + persianPresentVerbs + ur'(م|ی|د|یم|ید|ند)($|[^' + persianCharacters + ur'])', u'\\1\\2\u200c\\3\\4\\5',text) # بن فعل مضارع «دان» جدا آمد چون پسوند «ی» با عبارت «مـیدانی» تداخل داشت text = re.sub(ur'(^|[^' + persianCharacters + ur'])(مـی|نمـی) ?(دان)(م|د|یم|ید|ند)($|[^' + persianCharacters + ur'])', u'\\1\\2\u200c\\3\\4\\5',text ) # ماضی نقلی text = re.sub(ur'(^|[^' + persianCharacters + '])' + persianPastVerbs + ur'ه (ام|ای|ایم|اید|اند|است)($|[^' + persianCharacters + ur'])', u'\\1\\2ه\u200c\\3\\4', text ) # ای «توان» ناقلا! text = re.sub(ur"(\s)(مـی|نمـی) ?توان", u'\\1\\2\u200cتوان',text) # چسباندن تمام «ها»ها با فاصلهٔ مجازی text = re.sub(ur" ها([\]\.،\:»\)\s]|\'{2,3}|\={2,})",u'\u200cها\\1',text) text = re.sub(ur" ها(ی|یی|یم|یت|یش|مان|تان|شان)([\]\.،\:»\)\s])", u'\u200cها\\1\\2',text) text = re.sub(ur"هها", u'ه‌ها',text) # چسباندن تمام «ترین»ها با فاصلهٔ مجازی text = re.sub(ur" ترین([\]\.،\:»\)\s]|\'{2,3}|\={2,})",u'\u200cترین\\1',text) # به منظور حذف علامت ستاره اضافی قبل از عنوان ها text = re.sub(ur"\n\*\s*(\=+.+?\=+\n)", u'\n\\1',text) # عضو علامت های نقل قول تکی از عنوان ها text = re.sub(ur"(\n=+)(.*?)(?:'+)(.*?)(?:'+)(.*?)(=+\n)", u'\\1\\2\\3\\4\\5',text) # اول و آخر هم خط اگر فاصلهٔ مجازی باشد، حذف شود text = re.sub(ur"(^\u200c|\u200c$)", u'',text) # شناسه ها # توجه: «است» تعدماً از شناسه ها حذف شده چون بـه عنوان فعل مستقل هم کاربرد دارد و در آن موارد حتما جدا نوشته شود # مثال: «این یک خانـه است» کـه است درون آن حتما از خانـه جدا نوشته شود text = re.sub(ur'ه +(ایم|اید|اند)($|[^' + persianCharacters + ur'\u200c])', u'ه\u200c\\1\\2',text) # موارد جزئی دیگر و بی ربط بـه فاصلهٔ مجازی، حتما منتقل شود text = re.sub(ur"ا\sً", u'اً',text) # رفع اشکال که\u200cای text = re.sub(ur" که\u200cای ", u' کـه ای ',text) # رفع اشکال مـیستری (Mystery) text = re.sub(ur"مـی\u200cستری", u'مـیستری',text) text = re.sub(ur'مـی\u200cگوی($|[^' + persianCharacters + ur'\u200c])', u'مـیگوی\\1',text) # for مـیگوی دریـایی text = re.sub(ur'مـی\u200cدوی($|[^' + persianCharacters + ur'\u200c])', u'مـیدوی\\1',text) # for [[مـیدوی (ابهام‌زدایی)]] return text def punctuation(text): # / سجاوندی غیرفارسی text = re.sub(ur"ː", u': ',text) # Replace incorrect : character # استفاده از ؟ فارسی text = re.sub(ur'([' + persianCharacters + ur'])[ ]*[?]',u'\\1؟',text) # استفاده از ; فارسی text = re.sub(ur'([' + persianCharacters + ur'])[ ]*[;]',u'\\1؛ ',text) # استفاده از ، فارسی text = re.sub(ur'([' + persianCharacters + ur'])(\]\]|»|)[ ]*[,]', u'\\1\\2، ',text) #اصلاح ویرگول فارسی بـه انگلیسی درون مـیان کلمات انگلیسی text = re.sub(ur'([a-zA-Z])+ *،', u'\\1,',text) # حذف دو فاصله بعد از سجاوندی text = re.sub(ur"(،|؛|؟|\.) ", u'\\1 ',text) text = re.sub(ur"\r", u'',text) # افزودن یـا حذف فاصله # حذف فاصله‌های تکراری مـیان واژه‌ها، بـه جز بین نام پارامتر و علامت مساوی text = re.sub(ur"(. یک دو سه چهار مال ماس چار فی ) +(?=[^= ])", u'\\1',text) # فاصله بعد از سجاوندی بـه جز ! بـه دلیل (<!-- و !! درون بالای جدول‌ها) text = \ re.sub(ur"([،\.\؛\؟»])([^\s\.\(\)«»\"\[\]<>\d\w\{\}\|۰۱۲۳۴۵۶۷۸۹\'])" , u'\\1 \\2',text) # افزودن فاصله بـه بعد از سجاوندی text = re.sub(ur'([' + persianCharacters + ur']+|\]|\)|»)([؟،؛\!\.])([' + persianCharacters + persianDigits + ur']+|\[|\(|«)', u'\\1\\2 \\3',text) # حذف فاصله بعد از گیومـه، پرانتز، براکت باز text = re.sub(ur"([\(«\[]) ", u'\\1',text) # حذف فاصله قبل از گیومـه، پرانتز، براکت بسته text = re.sub(ur" ([\)»\]])", u'\\1',text) # افزودن فاصله قبل از گیومـه باز text = re.sub(ur"([^ \(\[\|\r\n>'])(«)", u'\\1 \\2',text) text = re.sub(ur" +\( +", u' (',text) text = re.sub(ur'([' + persianCharacters + ur']|\]|») *\( *(?=[' + persianCharacters + ur'])(?!ها\)|ان\))', u'\\1 (',text) text = re.sub(ur'([' + persianCharacters + ur']) *\) *(?=[' + persianCharacters + ur']|\[|«)', u'\\1) ',text) # Removes extra line between two items list text = re.sub(ur"(\n\*.*?)\n+(?=\n\*)", u'\\1',text) # Removes extra line between two items list text = re.sub(ur"(\n#.*?)\n+(?=\n#)", u'\\1',text) # Convert , to ، if there are Persian characters on both sides of it text = re.sub(ur'([' + persianCharacters + ur']), ?(?=[' + persianCharacters + ur'])', u'\\1\\2، ',text) # بعد از نقطه‌ویرگول فارسی علامتی قرار نمـی‌گیرد text = re.sub(ur"(؛)(([\s]+)?[\.،؛:!؟\-…])", u'\\1',text) # درون انتهای پاراگراف نقطه‌ویرگول فارسی نمـی‌آید text = re.sub(ur"(؛)(\s|)\n", u'.\n',text) # سجاوندی درون ابتدای علامت باز قرار نمـی‌گیرد text = re.sub(ur"([\(«])[\s]([؛\.،])", ur'\\1',text) # ویرگول فارسی # بعد از ویرگول فارسی این علامت‌ها قرار نمـی‌گیرد text = re.sub(ur"(،)([\s]+)?([،؛!؟\-][\.،؛!؟\-]*|\.(?!\.))", u'\\1',text) # نقطه # حتما سه نقطه باشد text = re.sub(ur'([' + persianCharacters + ur'])( *)(\.{3,})' , u'\\1\\2…',text) text = re.sub(ur" \.\.\. یک دو سه چهار مال ماس چار فی ", ur' … ',text) # بعد از نقطه این علایم نمـی‌آیند text = re.sub(ur'([' + persianCharacters + ur'])\.( *[،؛:!؟\?]+)', u'\\1.',text) # سجاوندی درون ابتدای پرانتز و گیومـه باز قرار نمـی‌گیرد text = re.sub(ur'(\(|«)[\.،؛](\s|)([' + persianCharacters + ur'])', u'\\1\\3',text) # سجاوندی درون داخل پرانتز text = re.sub(ur'([' + persianCharacters + ur'])(\s|)[\.،؛](\s|)(\))', u'\\1\\2\\3\\4',text) # درون صورت وابستگی معنی جملات بهتر هست نقطه‌ویرگول فارسی قرار گیرد text = re.sub(ur'([' + persianCharacters + ur'])(\s|)(\.)(\s|)(ولی|که\s|و\s|بنابراین|لذا)' , u'\\1؛ \\5',text) # / Question & exclamation mark # علامت تعجب تکراری بـه دلیل وجود !! درون عنوان جدول‌های مدیـاویکی نباید اصلاح شود. # تكرار علامت سوال فارسی text = re.sub(ur"(؟(\s|)){2,}", u'؟',text) # علامت‌گذاری نادرست text = text.replace(ur'؟ !', ur'؟!').replace(ur'! ؟', u'!؟') # Remove space preceding punctuation, except for ellipses text = re.sub(ur"([^ \.]) +([؟،\:؛!\.])(\s[^ \.]|<|$)", u'\\1\\2\\3',text) # عبارت «ها» درون پرانتز مـی‌تواند بـه کلمـه قبلی خود بچسبد text = re.sub(ur' \(ها\)', u'(ها)',text) text = re.sub(ur'ه‍\. (ق|خ|ش)([\n ])', u'ه‍.\\1\\2',text) #iاصلاح تاریخ هجری # حذف فاصلهٔ مـیان دو عبارت مختصر کـه دارای نقطهٔ اختصار باشند myregex = re.compile(ur'(?:[' + persianCharacters + ur']{1,2}\. ?){2,6}') lists=re.findall(myregex,text) if lists: for item in lists: item2= re.sub(ur'\. (.)', u'.\\1',item) if item!=item2: text = text.replace(item,item2) return text def runAbarAbzar (text): text = normalizeZwnj (text) text = quotation (text) text = dictation (text) text = toStandardPersianCharacters (text) text = applyOrthography (text) text = complexVerbsApplyZwnj (text) text = applyZwnj (text) text = punctuation (text) text = normalizeZwnj (text) return text def minor_edits (text): #تمـیزکاری فاصلهٔ مجازی text = re.sub(u'‌{2,}', u'‌', text) # پشت‌سرهم text = re.sub(u'\[\[([^\]\|]*?)‌]](%s+)' % faChrs, ur'[[\1|\1‌\2]]', text) # Piping text = re.sub(u'‌(?![ئاآأإژزرذدوؤةب\(\)پتثجچحخسشصضطظعغفقک،گلمنـهیيًٌٍَُِّْٰ\[\]ٓٔ]|[\u0900-\u097F]|ֹ)', '', text) # درون پس text = re.sub(u'(?<![ئبپتثجچح\[\]خسشصضطظعغ\(\)فقکگلم،نـهیيًٌٍَُِّْٰٓٔ]|[\u0900-\u097F]|f|ֹ)‌', '', text) # درون پیش return text def arabic_to_farsi(text): text = re.sub(u'[كﮑﮐﮏﮎﻜﻛﻚﻙ]', u'ک', text) text = re.sub(ur'[ىىىېىﻴﻲﻳﻲۍﻱﻰىىﻯي]', u'ی', text) text = re.sub(ur'[ہەھ]', u'ه', text) text = re.sub(ur'[َُِّْٰ]', u'', text)#ur'[\u064E\u064F\u0650\u0651\u0652\u0670]' count=-1 fanum=u"۰۱۲۳۴۵۶۷۸۹" arnum=u"٠١٢٣٤٥٦٧٨٩" for i in arnum: count+=1 text=text.replace(arnum[count],fanum[count]) return text def dictation(txt): #s: شبه‌ساده‌ها ####### مشارٌ‌اليه، مضاف‌ٌاليه، منقولٌ‌عنـه، مختلفٌ‌فيه، متفق‌ٌعليه، بعبارةٍاُخرى، اباًعن‌جدٍ، اىّ‌نحوٍكان. txt = re.sub(bLB+u'من ?(باب|جمله)'+bLA, ur'من‌\1', txt) txt = re.sub(u' مع ?(هذا|ذلک|الفار[غق]|الوصف|ال[اأ]سف)', ur' مع‌\1', txt) txt = re.sub(u' علی ?(هذا|حده|رغم|الاصول|الحساب|الخصوص|البدل|الدوام|السویـه|الطلوع|الله|القاعده)', ur' علی‌\1', txt) txt = re.sub(bLB+u' ذو ال', u' ذوال', txt) txt = re.sub(u' ذی ?(ال|نفع|امر|جود|حساب|حق|حیـات|ربط|روح|شعور|صلاحیّ?ت|عقل|علاقه|فقار|فن|قیمت|نفوذ)'+bLA, ur' ذی‌\1', txt) txt = re.sub(bLB+u' حقّ? (?=البوق|العبور|الت[اأ]لیف|التدریس|الزحمـه|اللّ?ه|النّ?اس|تعالی)', u' حق‌', txt) txt = re.sub(u' عن ?[قغ]ریب', u' عن‌قریب', txt) txt = re.sub(u' قتل ?عام', u' قتل‌عام', txt) txt = re.sub(u' علی[‌ ][اأ]یّ?[‌ ]?حال', u' علی‌أی‌حال', txt) txt = re.sub(u' من[‌ ]?حیث[‌ ]?المجموع', u' من‌حیث‌المجموع', txt) txt = re.sub(u'ب(?:|ه[‌ ])ر[اأ]ی[‌ ]العین', u'برأی‌العین', txt) txt = re.sub(u'ما ?ب(?:|ه[‌ ])ازا', u'مابازا', txt) txt = re.sub(u'متقابل[‌ ](?:ب|به[‌ ])ر[اأ]س', u'متقابل‌به‌رأس', txt) txt = re.sub(u'منحصر ?(?:ب|به[‌ ])فرد', u'منحصربه‌فرد', txt) txt = re.sub(bLB+u'فی[‌ ]?ما ?بین', u'فی‌مابین', txt) txt = re.sub(u' [اآ]ی[ةت][‌ ]?اللّ?ه', u' آیت‌الله', txt)#عنایت‌الله txt = re.sub(u'حج[ةته][‌ ]?ال[اإ]سلام', u'حجت‌الاسلام', txt) txt = re.sub(u'ثق[ةته][‌ ]?ال[اإ]سلام', u'ثقةالاسلام', txt) txt = re.sub(u'امـیر ?الم[وؤ]منین', u'امـیرالمؤمنین', txt) txt = re.sub(u'(متوازی|مختلف)[‌ ]?ال[اأ]ضلاع', ur'\1‌الأضلاع', txt) txt = re.sub(u'متساوی[‌ ]?السّ?اقین', u'متساوی‌الساقین', txt) txt = re.sub(u'قا[یئ]م[‌ ]الزّاوی[ةه]', u'قائم‌الزاویـه', txt) txt = re.sub(u'دا[یئ]ر[ةته][‌ ]?(البروج|المعارف|العلوم)', ur'دائرة\1', txt) txt = re.sub(u'دا[یئ]م[‌ ](الخمر|الصوم|الذّ?[کك]ر)', ur'دائم‌\1', txt) txt = re.sub(u'ر[اأإ]س[‌ ](الجدی|السّ?رطان|المال)', ur'رأس‌\1', txt) txt = re.sub(u'(مجنی|مجنی)[‌ ][عا]لیـه', ur'\1‌علیـه', txt) txt = re.sub(u'(مضاف|مسند|مرجوع|مشار|منتقل)ٌ?[‌ ]?[عا]لیـه', ur'\1ٌ‌الیـه', txt) txt = re.sub(u'منته[ای][‌ ]?[عا]لیـه', u'منتهی‌الیـه', txt) txt = txt.replace(u'بین الملل', u'بین‌الملل').replace(u'نرم افزار', u'نرم‌افزار').replace(u'حزب الل', u'حزب‌الل') txt = txt.replace(u'جدید الاحداث', u'جدیدالاحداث').replace(u'کثیر الانتشار', u'کثیرالانتشار').replace(u'سریع السیر', u'سریع‌السیر') txt = txt.replace(u'لازم الاجرا', u'لازم‌الاجرا').replace(u'فوق الذکر', u'فوق‌الذکر').replace(u'مرضی الطرف', u'مرضی‌الطرف') txt = txt.replace(u'خاتم الانبیـا', u'خاتم‌الانبیـا').replace(u'متفق القول', u'متفق‌القول').replace(u'قریب الوقوع', u'قریب‌الوقوع') txt = txt.replace(u'سوق الجیشی', u'سوق‌الجیشی').replace(u'محیر العق', u'محیرالعق').replace(u'عظیم الجث', u'عظیم‌الجث') txt = txt.replace(u'لطایف الحیل', u'لطایف‌الحیل').replace(u'موقوف المعانی', u'موقوف‌المعانی').replace(u'سلیم النفس', u'سلیم‌النفس') txt = txt.replace(u'موثق الصدور', u'موثق‌الصدور').replace(u'شمس العمار', u'شمس‌العمار').replace(u'حسب الامر', u'حسب‌الامر') txt = txt.replace(u'مسلوب الاراده', u'مسلوب‌الاراده').replace(u'مستجاب الدعو', u'مستجاب‌الدعو') txt = re.sub(bLB+u'(دار|مشترک|ممنوع|قدیم|قلیل|ناقص|ضعیف|قوی|تحت|ر[یئ]یس|ربّ?|امّ?|حقّ?|ماء|ماوراء|باب) (?=ال)', ur'\1‌', txt) #txt = re.sub(u'‌(?=الهام|الصاق|الزام|القا|الکتریک|الکتریسیته)', u'', txt) txt = txt.replace(u'برپایـه', u'بر پایـه') txt = txt.replace(u'سیستم عامل', u'سیستم‌عامل') #e: آ #txt = re.sub(bLB+u'(ا|أ)('+noAlef+u')'+bLA, ur"آ\2", txt)#it has some bugs! txt = txt.replace(u' راکتور', u' رآکتور').replace(u'فرآیند', u'فرایند')#.replace(u'فرآورده', u'فراورده')# e: ا <-> آ txt = re.sub(bLB+u'ایده?[‌ ][اآ]ل', u'ایده‌آل', txt) #s: افعال txt = txt.replace(u' دو مـیدانی ', u' دومـیدانی ') txt = re.sub(bLB+u'(نمـی) ?([نب]ی؟|)('+bnMzare+u'|'+bnMazi+u')(ان|)(م|ی|د|یم|ید|ا?ند)'+bLA, ur'\1‌\2\3\4\5', txt) # مـی bug همـیاری #txt = re.sub(bLB+u'(باز|فر[او]|وا|[بد]ر) ?([هن]?مـی‌|)([منب]ی?|)('+bnMzare+u'|'+bnMazi+u')(م|ی|د|یم|ید|ا?ند)'+bLA, ur'\1\2\3\4\5', txt) # پیشوند فعل ### BUG txt = re.sub(bLB+u'(باز|فر[او]|وا|بر) ?([منب]ی?|)('+bnMazi+u')ن'+bLA, ur'\1\2\3ن', txt)#وی درون جنگیدن با من txt = re.sub(bLB+u'('+bnMazi+u')ه (ام|ای|ایم|اید|اند)'+bLA, ur'\1ه‌\2', txt) # فم بین «ه» و شناسه طبق شیوه‌نامـه هست باید جدا باشد txt = re.sub(u'([منب])یـا(رزید|فتاد|فتد|فراشت|فروخت|فزود|فسرد|فشاند|ف[کگ]ند|نجامـید|ند[او]خت|ندیشید|ن[بگ]اشت|نگیخت)(م|ی|یم|ید|ند|[^'+faChrs+u'])', ur'\1ی\2', txt) # نیـافتاد -> نیفتاد txt = re.sub(u'([منب])یـا(رز|فر[او]ز|فزای|فسر|فشان|ف[کگ]ن|نبار|نجام|ندا[یز]|ندوز|ندیش|نگار|نگیز)(م|ی|د|یم|ید|ا?ند|[^'+faChrs+u'])', ur'\1ی\2\3', txt) # بیـاندیش -> بیندیش #s: ضمایر ملکی txt = re.sub(u'(?:ه|هٔ)[‌ ](مان|شان)'+bLA, ur'ه‌\1', txt)#BUG:Solved txt = re.sub(u'(?<=ه)[‌ ](ات|اش)'+bLA, ur'‌\1', txt) #s: و txt = re.sub(u'رفت[‌ ]?و ?[اآ]مد', u'رفت‌وآمد', txt) txt = re.sub(u'گفت[‌ ]?و ?گو', u'گفتگو', txt) txt = re.sub(u'جست[‌ ]?و ?جو', u'جستجو', txt) txt = re.sub(u'پخت[‌ ]?و ?پز', u'پخت‌وپز', txt) txt = re.sub(u'شست[‌ ]?و ?شو', u'شست‌وشو', txt) txt = re.sub(u'خفت[‌ ]?و ?خیز', u'خفت‌وخیز', txt) txt = re.sub(bLB+u'کند ?و ?کا?و'+bLA, u'کندوکاو', txt) txt = re.sub(bLB+u'کم[‌ ]و ?کاست', u'کم‌وکاست', txt) #s: بسیط txt = re.sub(u'(فن|دل)ّ?[‌ ]?[آا]وری', ur'\1اوری', txt) txt = re.sub(bLB+u' دل[‌ ](سوزی|تنگی|بری) '+bLA, ur' دل\1 ', txt)#Bug دل ب txt = re.sub(bLB+u'یک[‌ ]دلی'+bLA, u'یکدلی', txt) txt = re.sub(u'گاه[‌ ]و ?بی[‌ ]?گاه', u'گاه‌و‌بیگاه', txt) #e: دیگر غلط‌های املایی txt = re.sub(u' (سپاس|شکر|بر)[‌ ]?گ[ذز]ار ', ur' \1‌گزار ', txt)#بنا بر گزارش txt = re.sub(u'(پایـه|بنیـان)[‌ ]?گزار', ur'\1‌گذار', txt)#متغییر الگو بنیـانگذار txt = re.sub(bLB+u'بی[‌ ]?م[حه]ابا', u'بی‌محابا', txt) txt = re.sub(bLB+u' بر ?خو?است', u' برخاست', txt) txt = re.sub(u'خوانواد(?=ه|گی)', u'خانواد', txt) txt = re.sub(u'[آا]نفو?لو? ?[آا]نزا', u'آنفلوانزا', txt) txt = re.sub(bLB+u'غری[ضظ]ه'+bLA, u'غریزه', txt) txt = txt.replace(u'خواستگاه', u'خاستگاه') txt = txt.replace(u'باطری', u'باتری').replace(u'باطلاق', u'باتلاق').replace(u' ملیون', u' مـیلیون') txt = txt.replace(u'ضمـینـه', u'زمـینـه').replace(u'انظباط', u'انضباط').replace(u'حاظر', u'حاضر') #txt = txt.replace(u'نفوظ', u'نفوذ') ### txt = txt.replace(u'مذبور', u'مزبور').replace(u'قائله', u'غائله').replace(u' وحله', u' وهله').replace(u' مرهمت', u' مرحمت') txt = txt.replace(u' انـهنا', u' انحنا').replace(u'پزشگی', u'پزشکی').replace(u'تضاهرات', u'تظاهرات') txt = txt.replace(u'تلوزیون', u'تلویزیون').replace(u'پرفسور', u'پروفسور').replace(u' خوشنود', u' خشنود') txt = txt.replace(u' الویت', u' اولویت').replace(u'ملیـارد', u'مـیلیـارد') txt = txt.replace(u'شگفت انگیز', u'شگفت‌انگیز') txt = re.sub(u'ه‌(گی|گانی?)'+bLA, ur'\1', txt) #txt = re.sub(bLB+u'وب[‌ ]?(سایت|گاه)', u'وبگاه', txt) ###in many cases it could be template vaiable! txt = re.sub(u'ویکی ?(?=سازی|فا |[مپ]دیـا)', u'ویکی‌', txt) txt = re.sub(u'ویکی‌پدیـا ?(?='+langs+u')', u'ویکی‌پدیـای ', txt) txt = re.sub(u'علاقه?[‌ ]?مند', u'علاقه‌مند', txt) txt = re.sub(u'باقی ?ماند', u'باقی‌ماند', txt) txt = re.sub(u'مت[عاأ][سص]ّ?فانـه', u'متأسفانـه', txt) txt = re.sub(u'آندروید', u'اندروید', txt) txt = re.sub(bLB+u'من[‌ ]را'+bLA, u'مرا', txt) #txt = re.sub(u'عدم وجود'+bLA, u'نبودِ', txt) #txt = txt.replace(u'عدم حضور', u'غیـاب') txt = re.sub(u'اقدامات لازمـه?'+bLA, u'اقدام‌های لازم', txt) #e: ماه‌ها txt = re.sub(bLB+u'(?:جولای|ژوییـه)'+bLA, u'ژوئیـه', txt) #txt = re.sub(bLB+u'[اآ]گوست'+bLA, u'اوت', txt)#جین آگوست دومـینیک txt = re.sub(bLB+u'دی?سا?مبر'+bLA, u'دسامبر', txt) txt = re.sub(u'(ربیع|جمادی)[‌ ]?(?:الثانی|ال[اأإ]خر)', ur'\1‌الثانی', txt) txt = re.sub(u'(ربیع|جمادی)[‌ ]?ال[اأإ]ول', ur'\1‌الاول', txt) #txt = re.sub(u'ذ[وی][‌ ]?(?:ال|)(حج|قعد)[ةه]', ur'ذی‌ال\1ه', txt) ### #e: جمع‌الجمع txt = re.sub(u'(مدارک)[‌ ]?های?'+bLA, u'مدارک', txt) txt = re.sub(bLB+u'رسومات'+bLA, u'رسوم', txt) #e: حشو txt = re.sub(bLB+u'بر ?علیـه', u'علیـه', txt) # بر علیـه txt = re.sub(u'اعلم[‌ ]?تر', u'اعلم', txt) # تر #e: طبق قاعدهٔ فارسی txt = re.sub(u'(آزمایش|پژوهش|پیشنـهاد|نمایش|دستور|فرمایش|گزارش|گرایش|باغ|کوهستان)اتی ', ur'\1‌هایی ', txt) # اتی -> هایی txt = txt.replace(u'بازرسین', u'بازرسان').replace(u'داوطلبین', u'داوطلبان') #e: ین -> ان txt = txt.replace(u'زباناً', u'زبانی').replace(u'تلفناً', u'تلفنی').replace(u'ناچاراً', u'به‌ناچار').replace(u'گاهاً', u'گاهی') #e: اً #--------------------------Reza added------------------------ return txt.strip() def cleaning(text): text=text.replace(u'\r',u'').replace(u'\n^ "',u'\n*"').replace(u'&zwnj;',u'‌').replace(u'\n \n \n',u'\n\n').replace(u'\n \n',u'\n\n').replace(u'\n \n',u'\n\n').replace(u'\n \n',u'\n\n') text=text.replace(u'< ',u'<').replace(u' >',u'>').replace(u'<!--\n',u'<!--').replace(u'\n-->',u'-->').replace(u'<!---\n',u'<!---').replace(u'\n--->',u'--->') #تمـیزکاری فاصلهٔ مجازی text = re.sub(u'‌{2,}', u'‌', text) # پشت‌سرهم text = re.sub(u'\[\[([^\]\|]*?)‌]](%s+)' % faChrs, ur'[[\1|\1‌\2]]', text) # Piping text = re.sub(u'‌(?![ئاآأإژزرذدوؤةبپتثجچحخسشصضطظعغفقکگلمنـهیيًٌٍَُِّْٰٓٔ]|[\u0900-\u097F]|ֹ)', '', text) # درون پس text = re.sub(u'(?<![ئبپتثجچحخسشصضطظعغفقکگلمنـهیيًٌٍَُِّْٰٓٔ]|[\u0900-\u097F]|f|ֹ)‌', '', text) # درون پیش text=arabic_to_farsi(text) text=minor_edits (text) text = re.sub(u"(?:"+zaed+u")", "", text) return text def add_tanvin(text): def function(s): return s.group(1)+s.group(2)[:-1]+u'اً'+s.group(3) regex=ur"(^|[؛\s\n\.،«»\'\"\<\>؟])(" + needsNasb + ur')[' + NASB + ZAMM + ur']?([؛؟\s\n\.،«»\'\"\<\>]|$)' text=re.sub(regex,function,text, re.UNICODE) return text def main(ns,correectList): os.system('sql fawiki_p "SELECT page_title FROM page WHERE page_namespace = '+ns+' AND page_is_redirect = 0;" > '+bot_adress+'Title_sql_result.txt') text = codecs.open( bot_adress+'Title_sql_result.txt','r' ,'utf8' ) text = text.read().replace(u'_',u' ').replace(u'\r',u'').replace(u'\n\n',u'\n').strip()#.replace(u'\n',u'\n\nااا\n\n').strip() pywikibot.output(u'\03{lightblue}-- Sql is done!\03{default}') our_list={} new_txt2,new_txt3,new_txt4,new_txt5,new_txt6,new_txt7,new_txt=u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n' text2=text text2=dictation(text2) text2=cleaning(text2) text2=text2.replace(u',',u'،').replace(u' ،',u'،').replace(u' ؛',u'؛') text2=text2.replace(u' ',u' ').replace(u' ',u' ').strip() text2=runAbarAbzar(text2).strip() text2=text2.replace(u'ٔ',u'')#remove hamzeh text2=add_tanvin(text2) with codecs.open(bot_adress+u"zztxt1.txt" ,mode = 'w',encoding = 'utf8' ) as f: f.write(text) with codecs.open(bot_adress+u"zztxt1+abarabzar.txt" ,mode = 'w',encoding = 'utf8' ) as f: f.write(text2) pywikibot.output(u'\03{lightblue}-- compairing the lists\03{default}') #list2=text2.replace(u'\nااا\n',u'\n').replace(u'\n\n',u'\n').replace(u'\n\n',u'\n').strip().split(u'\n') #list1=text.replace(u'\nااا\n',u'\n').replace(u'\n\n',u'\n').replace(u'\n\n',u'\n').strip().split(u'\n') list2=text2.replace(u'\n\n',u'\n').replace(u'\n\n',u'\n').strip().split(u'\n') list1=text.replace(u'\n\n',u'\n').replace(u'\n\n',u'\n').strip().split(u'\n') count1=-1 for txt in list1: count1+=1 pywikibot.output( u'='+str(count1)) if list2[count1]!=txt: if list1[count1] in correectList: continue elif u'ویکی‌پدیـا:گزیدن نگاره برگزیده' in txt : continue elif u'–' in list2[count1] or u'. ' in list2[count1]: new_txt2+=u'# [['+txt +u']]\t > \t[['+list2[count1]+u']]\n' elif u'هٔ' in txt or u'ه‌ی ' in txt:#همزه new_txt7+=u'# [['+txt +u']]\t > \t[['+list2[count1]+u']]\n' elif u',' in txt and u'،' in list2[count1]: new_txt6+=u'# [['+txt +u']]\t > \t[['+list2[count1]+u']]\n' elif string.count(list2[count1],u'آ')> string.count(txt,u'آ'): new_txt3+=u'# [['+txt +u']]\t > \t[['+list2[count1]+u']]\n' elif u'ها' in list2[count1] and u' ها' in txt: new_txt4+=u'# [['+txt +u']]\t > \t[['+list2[count1]+u']]\n' elif u'ي' in list2[count1] or u' ك' in txt: new_txt5+=u'# [['+txt +u']]\t > \t[['+list2[count1]+u']]\n' else: new_txt+=u'# [['+txt +u']]\t > \t[['+list2[count1]+u']]\n' if ns=='0': saveAdress=u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال مقاله' elif ns=='14': saveAdress=u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال رده' elif ns=='10': saveAdress=u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال الگو' elif ns=='4': saveAdress=u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال ویکی‌پدیـا' elif ns=='12': saveAdress=u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال راهنما' else: pass fapage=pywikibot.Page(faSite,saveAdress) put_text=u'{{گزارش دیتابیس/صفحه به منظور انتقال}}\n== سجاوندی ==\n'+new_txt2+u'\n\n== ویرگول ==\n'+new_txt6+u'\n\n== همزه ==\n'+new_txt7+u'\n\n== آ ==\n'+new_txt3+u'\n\n== ها ==\n'+new_txt4+u'\n\n== ي-ك عربی ==\n'+new_txt5+u'\n\n== سایر ==\n'+new_txt+u'\n' if ns=='14': put_text=put_text.replace(u'[[',u'[[:رده:') elif ns=='10': put_text=put_text.replace(u'[[',u'[[الگو:') elif ns=='4': put_text=put_text.replace(u'[[',u'[[ویکی‌پدیـا:') elif ns=='12': put_text=put_text.replace(u'[[',u'[[راهنما:') else: pass fapage.put(put_text,u'ربات:به‌روزرسانی گزارش') fapage=pywikibot.Page(faSite,saveAdress+u'/امضا') fapage.put(put_text,u'ربات:به‌روزرسانی گزارش') new_txt2,new_txt3,new_txt4,new_txt5,new_txt6,new_txt7,new_txt=u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n' def get_whiteList(saveAdress): correct_page=pywikibot.Page(faSite,saveAdress+u'/فهرست سفید') correctLinks=correct_page.get() correctLinks=correctLinks.replace(u'\r',u'') correectList=[] for i in correctLinks.split(u'\n*'): correectList.append(i.strip()) return correectList def run(): correectList=get_whiteList (u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال مقاله') print "Starting NS 0" main('0',correectList) correectList=get_whiteList (u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال رده') print "Starting NS 14" main('14',correectList) correectList=get_whiteList (u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال الگو') print "Starting NS 10" main('10',correectList) correectList=get_whiteList (u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال ویکی‌پدیـا') print "Starting NS 4" main('4',correectList) correectList=get_whiteList (u'ویکی‌پدیـا:گزارش دیتابیس/برای انتقال راهنما') print "Starting NS 12" main('12',correectList) if __name__ == "__main__": run()
برگرفته از «https://fa.wikipedia.org/w/index.php?title=ویکی‌پدیـا:درخواست‌های_ربات/تمـیزکاری_عنوان‌ها&oldid=20483965»




[ویکی‌پدیـا:درخواست‌های ربات/تمـیزکاری عنوان‌ها - ویکی‌پدیـا ... یک دو سه چهار مال ماس چار فی]

نویسنده و منبع |