def removePunctuation(listOfToken):
    punctuate = (".","?","[","]","(",")",":","!",";")
    for i in listOfToken:
        if i in punctuate:
            listOfToken.remove(i)
    return listOfToken


def removeStopWord(listOfToken):
    stopwords = (u"بلا", u"فلا", u"ولا", u"ان", u"بعد", u"ضد", u"يلي", u"الى", u"في", u"من",
                 u"حتى", u"وهو", u"يكون", u"به", u"وليس", u"أحد", u"على", u"وكان", u"تلك",
                 u"كذلك", u"التي", u"وبين", u"فيها", u"عليها", u"إن", u"وعلى", u"لكن", u"عن",
                 u"مساء", u"ليس", u"منذ", u"الذي", u"أما", u"حين", u"ومن", u"ليست", u"وكانت",
                 u"أي", u"ما", u"عنه", u"حول", u"دون", u"مع", u"لكنه", u"ولكن", u"له", u"هذا",
                 u"والتي", u"فقط", u"ثم", u"هذه", u"أنه", u"تكون", u"قد", u"بين", u"جدا",
                 u"لن", u"نحو", u"كان", u"لهم", u"لان", u"اليوم", u"لم", u"هؤلاء", u"فإن",
                 u"فيه", u"ذلك", u"لو", u"عند", u"اللذين", u"كل", u"بد", u"لدى", u"وثي",
                 u"أن", u"ومع", u"فقد", u"بل", u"هو", u"عنها", u"منه", u"بها", u"وفي", u"فهو",
                 u"تحت", u"لها", u"أو", u"إذ", u"علي", u"عليه", u"كما", u"كيف", u"هنا", u"وقد",
                 u"كانت", u"لذلك", u"أمام", u"هناك", u"قبل", u"معه", u"يوم", u"منها", u"إلى",
                 u"إذا", u"هل", u"حيث", u"هي", u"اذا", u"او", u"و", u"لا", u"الي", u"إلي",
                 u"مازال", u"لازال", u"لايزال", u"مايزال", u"اصبح", u"أصبح", u"أمسى", u"امسى",
                 u"أضحى", u"اضحى", u"ظل", u"مابرح", u"مافتئ", u"ماانفك", u"بات", u"صار", u"وليست",
                 u"إن", u"كأن", u"ليت", u"لعل", u"لاسيما", u"ولايزال", u"الحالي", u"ضمن", u"اول",
                 u"وله", u"ذات", u"اي", u"بدلا", u"اليها", u"انه", u"الذين", u"فانه", u"وان",
                 u"والذي", u"وهذا", u"لهذا", u"الا", u"فكان", u"ستكون", u"مما", u"أبو", u"بإن",
                 u"الذي", u"اليه", u"يمكن", u"بهذا", u"لدي", u"وأن", u"وهي", u"وأبو", u"آل",
                 u"الذي", u"هن", u"الذى", u"وكذلك", u"وما", u"ولهذا", u"وقبل", u"اما",  u"بتلك",
                 u"بهذه", u"بذلك", u"لماذا", u"ماذا", u"لما", u"ولما", u"ولماذا", u"وماذا",
                 u"ولم", u"مثل", u"مثلا", u"ابن", u"بعض", u"كلا", u"قال", u"قالت", u"لقد", u"ولقد",
                 u"ولعل", u"انهم", u"ايضا", u"كل", u"وكل", u"بينهم", u"بين", u"بينما", u"بينهن",
                 u"وبينما", u"وبين", u"بيننا", u"وبينهم", u"وايضا", u"وان", u"والى", u"وفي",
                 u"واذا", u"لذا", u"ولذا", u"بحيث", u"وهل", u"ومنها", u"بما", u"وبما", u"سوف",
                 u"لسوف", u"ولسوف", u"وسوف", u"أثناء", u"وأثناء",  u"اللتي", u"واللتي", u"باللتي",
                 u"فاللتي", u"فيهم", 'أن', 'لن','إذن', 'كي', 'لم', 'لما', 'لا', 'إن', 'لو', 'اذا', 'ان', 'ما', 'كي', 'لو',
                 'الا', 'اما', 'هلا', 'لولا', 'لوما', 'سوف', 'كلا', 'قد', 'لن', 'لم', 'لما', 'يا', 'آ', 'أي', 'أيا', 'هيا',
                 'إن', 'أن', 'كأن', 'لكن', 'ليت', 'لعل', 'كان', 'أصبح', 'أضحى', 'أمسى', 'بات', 'ظل', 'صار', 'مابرح',
                 'ماانفك', 'مازال', 'مافتئ', 'مادام', 'ليس', 'ماظل', 'إذا', 'إذ', 'أما', 'إما', 'ها', 'أما', 'ألا',
                 'لات', 'إن', 'ما', 'لا', 'لم', 'لما', 'لن', 'نعم', 'بلا', 'إي', 'أجل', 'جير', 'جلل', 'هل', 'ألا', 'أما',
                 'هي', 'هو', 'هن', 'هما', 'هم', 'انا', 'نحن', 'انت', 'انتما', 'انتم', 'انتن', 'هذا', 'هذه', 'هؤلاء', 'هاهنا',
                 'ذاك', 'ذلك', 'تلك', 'اولئك', 'هناك', 'هنالك', 'الذي', 'التي', 'اللذان', 'اللتان', 'الذين', 'اللاتي',
                 'عن', 'علي', 'من', 'الي', 'كي', 'منذ', 'في', 'متي', 'لعل', 'عدا', 'خلا', 'حاشا', 'حتي', 'مذ',
                 'و', 'لو', 'ثم', 'حتى', 'لكن', 'لا', 'بل', 'ام', 'او')

    for word in listOfToken:
        if word in stopwords:
            listOfToken.remove(word)
    return listOfToken


class TextProcessing:

    def __init__(self, listToken):
        self.listToken = listToken

    def textProcessing(self):
        removePun = removePunctuation(self.listToken)
        print("removePunctuation")
        print(removePun)
        removeStop = removeStopWord(removePun)
        print("removeStopWord")
        print(removeStop)
        return removeStop