Tag: Python

  • NLTK corpus readers for NECTEC BEST and ORCHID corpora

    ความเดิมจากตอนที่แล้ว ทดลองสร้าง corpus reader ใน NLTK ตอนนี้แก้การ encode ให้ใช้ได้กับ nltk.Text() แล้ว (แทนที่จะเก็บเป็น unicode ก็เก็บเป็น utf-8 encoded str แทน) พร้อมกับเพิ่มตัวอ่านสำหรับคลังข้อความ BEST และ ORCHID ด้วย ตัวอ่านคลัง BEST ในรุ่น 0.3 นี้ เรียกดูเป็นหมวดได้ (ข่าว วรรณกรรม สารานุกรม บทความ) เรียกดูข้อมูลกำกับขอบเขตคำ (word boundaries) ได้ แต่ยังไม่รองรับ <NE>named-entities</NE> กับ <AB>คำย่อ</AB> เนื่องจาก BEST ไม่มีข้อมูลขอบเขตประโยค ตัวอ่านคลังจะสร้างขึ้นเอง โดยสมมติ \n เป็นขอบเขตประโยค ส่วนตัวอ่านคลัง ORCHID ในรุ่น 0.3 นี้ เรียกดูข้อมูลกำกับขอบเขตคำและชนิดคำ (Part-of-Speech)…

  • playing around Thai blog corpus with NLTK

    อยากจะลองเล่น NLTK กับข้อมูลภาษาไทยดู คิดไปคิดมา เอาข้อมูลจาก foosci.com มาลองดูละกัน เขาเปิดให้ใช้ เป็น ครีเอทีฟคอมมอนส์ แสดงที่มา-อนุญาตแบบเดียวกัน (CC by-sa) แต่ไม่อยากไปดึงมาเอง ขี้เกียจ เห็นว่าโครงการโรตี (อัลฟ่า) โดย Opendream ดูดบล็อกไทยจำนวนหนึ่งมาเก็บไว้ได้ระยะหนึ่งแล้ว เพื่อใช้ในการแนะนำลิงก์ (ดูตัวอย่างที่ keng.ws ที่ท้ายแต่ละโพสต์) ก็เลยเอาจากตรงนั้นมาใช้ละกัน ข้อมูลที่มีเป็น XML ที่ dump มาจาก MySQL เราก็เขียนสคริปต์ก๊อก ๆ แก๊ก ๆ ดึงเฉพาะที่อยากได้ออกมา ด้วย xml.etree.cElementTree (ตอนแรกใช้ ElementTree แตน ๆ แต่อืดเกิน เนื่องจากแฟ้มมันใหญ่) เอา HTML tags ออกด้วย Beautiful Soup แล้วตัดคำด้วย python-libthai ตัดประโยคแบบถึก ๆ ด้วย…

  • encode("UTF-8", "ignore") ข้าม ๆ เรื่องที่ทำไม่ได้ใน Python

    หลังจากเอา python-libthai ของวีร์มาใช้กับข้อมูลที่ได้มาจากเว็บ ก็พบปัญหาเรื่อง character encoding นิดหน่อย libthai นั้นปัจจุบันทำงานกับข้อมูลที่เป็นภาษาไทย 8 บิตอยู่ (น่าจะเป็น TIS-620) ตัว python-libthai เลยมีขั้นตอนการแปลงจากยูนิโค้ดไปเป็น 8 บิตก่อน ทีนี้ ปรากฏว่า encoder “CP874”, “TIS_620” และ “ISO8859_11” ของ Python มันดันแปลงตัวอักษรบางตัวไม่ได้ (เนื่องจากใน charset พวกนั้น มันไม่มีตัวอักษรดังกล่าว) โปรแกรมก็เลยจะตาย ถ้าไปเจออักษรพวกนั้น ก่อนตายมันจะโวยทำนองว่า : UnicodeEncodeError: ‘charmap’ codec can’t encode character u’\u200b’ in position 3560: character maps to <undefined> วิธีแก้แบบถึก ๆ คือ เอาหูไปนาเอาตาไปไร่ซะ ignore…

  • modifying setup.py for libthai Python binding in MacPorts environment

    (ปรับปรุง 2009.04.21 พบท่าง่ายกว่าเดิม ดูด้านล่าง) เอา libthai Python binding ที่วีร์ทำเอาไว้มาใช้บน Mac OS X + MacPorts ต้องดัดแปลง setup script นิดนึง เนื่องจากผมติดตั้ง libthai ผ่านทาง MacPorts (ด้วยคำสั่ง sudo port install libthai) ดังนั้นแฟ้มไลบรารี (libthai.a) กับแฟ้ม include (*.h) ทั้งหลาย จึงไม่ได้อยู่ในตำแหน่งปกติที่ apple-gcc จะวิ่งไปหา (ผมใช้ i686-apple-darwin9-gcc-4.0.1 ลองใช้ gcc-4.2, gcc-mp-4.4 ที่อยู่ในเครื่องแล้ว มันบอกไม่รู้จัก flag โน้น flag นี้ ผมก็เซ็ตไม่เป็นด้วย เลยใช้ gcc ตัวที่เขาให้มาแต่เดิมนี่แหละ) จึงจำเป็นต้องแก้ไข setup.py นิดหน่อย เพื่อบอกตำแหน่งของ…

  • download attachments from Gmail using FTP/script

    (เอ เรามี Python66 ป่าวหว่า ? แบบอันนี้เขียนลง Django66 ได้ป่ะ ?) สรุปว่าเอาไปลง Pylons66 ครับ ดาวน์โหลดแฟ้มจาก Gmail ด้วย FTP (หรือสคริปต์) ง่าย ๆ ไม่ซับซ้อน แค่เรียกตัว ftp daemon (Gmail-FTP proxy) ให้ทำงาน, แล้วก็ใช้โปรแกรม FTP อะไรก็ได้ไปดึงแฟ้มมา. โดยแฟ้มที่จะดึงมาได้นั้น จะต้องเป็นแฟ้มแนบ (attachment) ที่อยู่ในจดหมายที่ติดป้ายว่า ‘ftp’. ตัวโปรแกรม ftp daemon ที่ว่านี้ คือสคริปต์ไพธอน (Python) เล็ก ๆ ที่ชื่อว่า gmailftpd.py มันอยู่ในแพคเกจ libgmail-docs ของ libgmail. ก่อนจะใช้งาน gmailftpd นี้ เราจำเป็นต้องมี libgmail กับ mechanize…

  • install Python alternatives

    สวัสดีปีใหม่ — 12-14 เม.ย. ผมและเพื่อน ๆ อยู่ที่ Thai Firefox L10n sprint po2moz ใช้กับ Python 2.5 ไม่ได้ ต้องเป็นรุ่นต่ำกว่านั้น ลง Python (และโปรแกรมอื่น ๆ) หลาย ๆ รุ่นในเครื่อง และวิธีตั้งค่ารุ่นปริยาย ลงที่รุ่นที่อยากได้ apt-get install python2.4 บอกเครื่อง ว่าเรามีหลายรุ่นนะ update-alternatives –install /usr/lib/python python /usr/lib/python2.3 9 update-alternatives –install /usr/lib/python python /usr/lib/python2.4 5 update-alternatives –install /usr/lib/python python /usr/lib/python2.5 1 (–install ลิงก์คำสั่งปริยาย ชื่อคำสั่ง ลิงก์ไปหารุ่นที่ระบุ ลำดับความสำคัญ) จากนั้นก็เลือกรุ่นที่อยากใช้…

  • Abracadacaba

    อยากลองลง Abraca (XMMS2 client) แต่ build ไม่ผ่าน มันอยากได้ GTK+ 2.8.0 เรามี 2.11.6 🙁 แก้ไงก็ไม่รู้ด้วย ใช้ระบบ build แปลก ๆ ชื่อ “waf” (เป็น Python หมดเลย อ่านง่าย แต่ไม่เข้าใจ :P) ใน Banshee ถึงแม้เวลานำเพลงเข้าไลบรารีมันจะตั้งชื่อโฟลเดอร์ให้ตามชื่อศิลปินและอัลบั้ม แต่พอเปลี่ยนชื่อทีหลัง มันไม่ยอมเปลี่ยนชื่อโฟลเดอร์+ย้ายให้เรา (iTunes ทำให้) การเรียงโฟลเดอร์ดี ๆ จะอำนวยความสะดวกแก่คนอื่นที่จะมาดูดเพลงจากเครื่องเรา! 😛 technorati tags: Linux, music player

  • Exaile

    จากที่บ่น ๆ เรื่องโปรแกรมฟังเพลงบนลีนุกซ์ ไปครั้งที่แล้ว ตอนนี้เราคิดว่าเจอตัวที่ถูกใจแล้วแหละ ใช้ Exaile มาได้แล้วซักพัก ใช้ได้ดีทีเดียว เล่นเพลงที่อยู่ในไอพ็อดได้ ก๊อปเพลงไปได้ แต่ว่าไม่มีฟังก์ชั่น sync นะ มีฟังก์ชั่นที่ชอบและไม่เคยเห็นที่ไหนมาก่อน ก็คือ Dynamic Playlist เป็นการไปดูข้อมูล “เพลงแนะนำ” จาก Last.fm แล้วก็เพิ่มเพลงพวกนั้น (ถ้ามีในเครื่อง) ลงใน playlist อัตโนมัติ เข้าท่า ไม่ช้าด้วย (เร็วกว่า Banshee แยะ) คิดว่าจะใช้ Exaile นี่แหละเป็นหลัก ตัว Exaile นี้ ทีมพัฒนาบอกว่า ตั้งใจให้เป็น clone ของ Amarok (โปรแกรมฟังเพลงบน KDE) โดยใช้ GTK+ แทน Qt โปรแกรมเขียนด้วย Python มีโค้ดหลายส่วนเอามาจาก Ex Falso /…

  • Human readable markups

    Non-intrusive text markup languages * Textile *: reference | for Ruby (RedCloth) | for Python (PyTexttile) ** Markdown **: for Perl (Markdown) | for Ruby (RedCloth) List of lightweight markup languages