ใช้ swath จาก python

swath เป็นโปรแกรมตัดคำที่ดีโปรแกรมหนึ่ง เอา text อะไรยัดเข้าไปก็มักจะไม่เจ๊ง ไม่ต้องเขียนอะไรครอบมาก แต่ว่าบอกทีก็อยากใช้จาก python วีธีหลักที่จะเรียกใช้ ก็อาจจะสร้าง module ด้วย c++ ขึ้นมาเชื่อม swath กับ python วิธีแรกนี้โปรแกรมทำงานได้รวดเร็ว แต่ว่ามันเหนื่อยนะกว่าจะเสร็จ

ผมก็เลยใช้วิธีที่โปรแกรมทำงานช้าๆ แต่เขียนเสร็จเร็วแทน โดยเรียกผ่าน subprocess

import subprocess

def wordbreak(utxt):
    if not isinstance(utxt, unicode):
        raise TypeError, "wordbreak needs unicode"
    tis_txt = utxt.encode("CP874", 'replace')
    p = subprocess.Popen("swath", stdin = subprocess.PIPE, \
            stdout = subprocess.PIPE, close_fds = True)
    p.stdin.write(tis_txt)
    p.stdin.close()
    raw_output = p.stdout.read().decode("CP874", "replace")
    words = raw_output.split("|")
    p.stdout.close()
    return words

# Copyright (c) 2010 Vee Satayamas
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

เวลาเรียกใช้ก็สั่ง wordbreak(u”ทดลองตัดคำ”) อะไรแบบนี้ได้ แล้ว wordbreak ก็จะ return list ของคำออกมา ผมใช้ python 2.5.x นะครับ

16 thoughts on “ใช้ swath จาก python

    1. ถ้าเอาตามสภาพเดิม kucut เรียกจาก python ง่ายกว่านะครับ ไม่ต้องสร้าง process ใหม่ด้วย

  1. ถามหน่อยครับ
    ลง python27 ที่ C:\Python2
    jetpack ที่ C:\jetpack
    บน windows 7

    เข้าไปรัน active จะเห็นประมาณ
    File “” ,line1 ,in(module)
    ImportError: No module name jetpack_sdk_env
    (c:\jetpack\bin c:\jetpack\bin)

    ถ้าลองพิมพ์คอมมาน
    echo %path%
    ตอบกลับ
    c:\python27

    echo %pythonpath%
    ตอบกลับ
    C:\PYTHON27;C:\PYTHON27\DLLS;C:\PYTHON27\LIB;C:\Python27\Lib\lib-tk

    เกิดจากอะไรครับ

  2. ตัวแปร path ,pythonpath ผมเข้าไป set เองครับไม่รู้ถูกรึเปล่า ปัญหาคือตัวติดตั้ง jetpack https://jetpack.mozillalabs.com/ มันหาอะไรไม่เจอก็ไม่ทราบ แต่ในบอร์ดบอกให้แก้ที่สองจุดนี้

  3. เข้าไปที่ bin ก่อนแล้ว activate
    c:\jetpack cd bin
    activate

    python ต้องกำหนดบริเวณที่จะรันโค้ทก่อนรึเปล่าครับ

  4. ถ้าใช้ SWATh กับ php มีขั้นตอนอย่างไรครับ ขอเริ่มตั้งแต่ 1.ลง SWATh 2. การใช้ php ดึงข้อมูล

  5. รบกวนสอบถามหน่อยนะคะ คำถามเดียวกับข้างบนเลยคะ อยากทราบวิธีการใช้ php ให้การเรียกใช้ swath คะ

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s