用python调用ICTCLAS50进行中文分词

直接上源码吧

tokenizer类:

#_*_encoding:utf-8_*_

from ctypes import *

class tokenizer:
   
        def __init__(self):
            self._stext=['、','“','”',',','。','《','》',':',';','!','‘','’','?','?','!','·',' ',''] #枚举标点符号包括空格
            self._stopword_list=[line for line in file('stopword.txt')]
            self._stopword_list=map(lambda x: x.strip(),self._stopword_list) # 去掉行尾的空格


        def parse(self,text):       
            atext_list=[]#存放要分词的文档
            rtext=[]#存放去标点符号和分词后的词
            participle = cdll.LoadLibrary('X:\\API\\ICTCLAS50.dll')
            participle.ICTCLAS_Init(c_char_p('X:\\API'))
            strlen = len(c_char_p(text).value)
            t = c_buffer(strlen*6)
            a =participle.ICTCLAS_ParagraphProcess(c_char_p(text),c_int(strlen),t,c_int(3),0)
            atext_list=t.value.split(' ')
            participle.ICTCLAS_Exit()
            rtext=[item for item in atext_list if item not in self._stext]
            result_list=[iword for iword in rtext if iword not in self._stopword_list]

            return result_list

调用tokenizer类,test_tokenizer类:

#_*_encoding:utf-8_*_
import tokenizer

text="文本的分类和聚类是一个比较有意思的话题,我以前也写过一篇blog《基于K-Means的文本聚类算法》,加上最近读了几本数据挖掘和机器学习的书籍,因此很想写点东西来记录下学习的所得。"
list=tokenizer.tokenizer().parse(text)

for item in list:
    print item

posted @ 2012-01-07 11:36  app_  阅读(2619)  评论(1编辑  收藏  举报