Regular Expression to accept all Thai characters and English letters in python

后端 未结 3 1105
野的像风
野的像风 2020-12-30 12:23

I need to vectorize text documents in Thai (e.g Bag of Words, doc2vec).

First I want to go over each document, omitting everything except the Thai characters and En

3条回答
  •  一整个雨季
    2020-12-30 13:03

    In Python 3,

    s = "ทรูวิชั่นส์ ประกาศถ่ายทอดสดศึกฟุตบอล พรีเมียร์ ลีก อังกฤษ ครบทุกนัดเป็นเวลา 3 ปี ตั้งแต่ฤดูกาล 2016/2017 - 2018/2019 พร้อมด้วยอีก 5 ลีกดัง อาทิ ลา ลีกา สเปน, กัลโช เซเรีย เอ อิตาลี และลีกเอิง ฝรั่งเศส ภายใต้แพ็กเกจสุดคุ้ม ทั้งผ่านมือถือ และโทรทัศน์ some, English words here! abc123"
    pattern = re.compile(r"(?:[^\d\W]+)|\s")
    for each in pattern.findall(s): print(each, end="")
    

    Outputs this:

    ทรวชนส ประกาศถายทอดสดศกฟตบอล พรเมยร ลก องกฤษ ครบทกนดเปนเวลา  ป ตงแตฤดกาล    พรอมดวยอก  ลกดง อาท ลา ลกา สเปน กลโช เซเรย เอ อตาล และลกเอง ฝรงเศส ภายใตแพกเกจสดคม ทงผานมอถอ และโทรทศน some English words here
    

    Accents are being removed, so this is not a perfect answer. I'm currently looking around to see why this is happening.

    EDIT: Using the character range from HolyDanna's answer, you can keep the accents. Interesting that just using word does not keep accents (this is probably due to how unicode code points add accents as another code point after the accented character, but seems like a bug). It also has the side effect of removing characters from other languages. Just replace the compile line HolyDanna's:

    pattern = re.compile(r"[\u0E00-\u0E7Fa-zA-Z' ]")

    You can get rid of the apostrophe (etc) if you don't want it.

提交回复
热议问题