زبان برنامه نویسی پایتون - پردازش رشته - tokenization (کدنویسی)

به نام خداTokenization-python- پردازش رشتهحال هرکدام ازبخش های توضیح داده شده در زبان پایتون پیاده سازی می شود. https://virgool.io/@knowledgecomputer2018/%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%B1%D8%B4%D8%AA%D9%87-tokenization-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-uua6omw3ihpp فرض می کنید متن ورودی فارسی یا انگلیسی می باشد.ابتدا stopwords های فارسی وانگلیسی را دریک فایل ذخیره کرده ودرون برنامه اصلی import می کنید. from HelloWorldApp.StopWords import * #1 حال هرکدام از stopwords های فارسی وانگلیسی را دریک لیست قراردهید.stopwords1=StopWords() stopwords2=StopWords_fa()حال توسط تابع زیر متن انگلیسی را به متن باحروف کوچک تبدیل کنیدtext=text.lower()بعدازکوچک کردن متن هرخط را توسط تابع زیر دریک عنصر لیست قراردهید.lines=text.splitlines()حال باحلقه زیر فضاهای خالی هر خط را حذف کنید.ودریک لیست جدید قراردهید.sentences=[]#7 for line in lines: sentences.append(line.strip())کاراکترهایی که درنظر گرفته شده باید از متن حذف شود . هرکاراکتری را می توان درنظرگرفت وازمتن حذف کرد.non_words = {'(':&quotLPAR&quot, ')':&quotRPAR&quot, '[':&quotLSQB&quot, ']':&quotRSQB&quot, ':':&quotCOLON&quot, ',':&quotCOMMA&quot, ';':&quotSEMI&quot, '+':&quotPLUS&quot, '-':&quotMINUS&quot, '*':&quotSTAR&quot, '/':&quotSLASH&quot, '|':&quotVBAR&quot, '&':&quotAMPER&quot, '<':&quotLESS&quot, '>':&quotGREATER&quot, '=':&quotEQUAL&quot, '.':&quotDOT&quot, '%':&quotPERCENT&quot, '{':&quotLBRACE&quot, '}':&quotRBRACE&quot, '==': &quotEQEQUAL&quot, '!=': &quotNOTEQUAL&quot, '<=': &quotLESSEQUAL&quot, '>=': &quotGREATEREQUAL&quot, '~':&quotTILDE&quot, '^':&quotCIRCUMFLEX&quot, '<<': &quotLEFTSHIFT&quot, '>>': &quotRIGHTSHIFT&quot, '**': &quotDOUBLESTAR&quot, '+=': &quotPLUSEQUAL&quot, '-=': &quotMINEQUAL&quot, '*=': &quotSTAREQUAL&quot, '/=': &quotSLASHEQUAL&quot, '%=': &quotPERCENTEQUAL&quot, '&=': &quotAMPEREQUAL&quot, '|=': &quotVBAREQUAL&quot, '^=': &quotCIRCUMFLEXEQUAL&quot, '<<=': &quotLEFTSHIFTEQUAL&quot, '>>=': &quotRIGHTSHIFTEQUAL&quot, '**=': &quotDOUBLESTAREQUAL&quot, '//': &quotDOUBLESLASH&quot, '//=': &quotDOUBLESLASHEQUAL&quot, '@':&quotAT&quot,'#':&quotSHARP&quot,'\\':&quotDOUBLEBAKSLASH&quot,'_':&quotUNDERSCOPE&quot,&quot'&quot:&quotSINGLE_Q&quot,&quot$&quot:&quotDollar&quot, &quot!&quot:&quotWONDER&quot,&quot|&quot:&quotSEP&quot,&quot?&quot:&quotQUESTION&quot,&quot“&quot:'DOUBLE',&quot”&quot:&quotI_DOUBLE&quot,'`':&quotsingle&quot,&quot’&quot:&quotsingle2&quot,'...':'etc','−':&quotdash&quot } l = ['0','1','2','3','4','5','6','7','8','9'] #Numbersحال توسط حلقه های زیر ابتدا هرخط را جدا کرده واگرفضای خالی نبود (خط2) کاراکترهایی که در نظر گرفته اید از آن حذف می شود(خط3 تا خط 5) وسپس هرخط را باجداکننده فضای خالی به توکن هایی که عضو یک لیست می باشند تبدیل کنید(خط 7) سپس اعداد را از بین توکن حذف کنید(خط8 تا خط 11) سپس فضای خالی هر توکن را حذف کنید (خط12) سپس اگر توکن یا عنضر لیست فضای خالی نبود و طولش بزرگتر از دو بود و های جزو stowords فارسی وانگلیسی نبود .خط13 ) حال به لیست جدید اضافه اش کن حال نوبت به ریشه یابی توکن می رسد که دراین جا ریشه یابی پورتر برای زبان انگلیسی استفاده شده است.(خط 15) وسپس توکن را دوباره فضای خالی اش را حذف می کنید.(خط 16).خط 18و19 لیست ها رادریک فایل متنی ذخیره می کند می توان هربخش را دریک فایل متنی ذخیره کرد تاخروجی هر مرحله را مشاهده کرد.خط 20 تعداد توکن های متن را درخروجی نشان می دهد وخط اخر توکن ها را برمی گرداند.terms=[] phrases=[] for line in sentences:#get line i line 1if(line): for nw in non_words:# line3if(line.find(nw)!=-1):#ex ==if : find in line line=line.replace(nw,' ') #rep space with : line5#line6for phrase in line.split(' '):#for word in line i;token line7#del nums st_res=&quot&quot #line 8for ch in phrase: if ch not in l: st_res+=ch #line11 phrase=st_res.strip() #line 12if(phrase and (len(phrase)>2) and (phrase not in stopwords1) and ((phrase not in stopwords2))):# phrases.append(phrase)#FOR TEST line14 phrase =stem(phrase) #line15 terms.append(phrase.strip()) #del whitespace word line i #line16 print(&quotstemmed&quot) print(&quotfiltered&quot) webwtext(str(phrases),'Search/Plaintext/phrases.txt') #line 18 webwtext(str(terms),'Search/Plaintext/terms1.txt') # line 19 print(&quotnumber words in:&quot,len(terms)) #line20 # drop blank lines return terms#line21تااین جا که توضیح داده شد ابتدا یک متن دارید وآن را به توکن های یکسان یا غیریکسان تبدیل کرده ودرون لیست قرارمی گیرد.دراین تشخیص زبان ندارید.موفق باشیدبه امید خدا