天天看点

语素、词性列表及jieba与哈工大pyltp一个例子对比1 关于语素2 ICTCLAS 词性列表3 jieba 分词与pyltp分词

1 关于语素

百度百科的解释:

语法单位有大有小,最大的语法单位是句子,比句子小的语法单位,依次是短语、词、语素。人类的语言是有声音、有意义的,是语音和语义的结合体,这便是语法单位基本的特点。语素是最小的语法单位,也就是最小的语音、语义结合体。 所有我的理解是,分词后的各个词都是语素。语素有名词性语素、动词性语素等类别。

2 ICTCLAS 词性列表

注: ICTCLAS——中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典。先后精心打造五年,内核升级6次,目前已经升级到了ICTCLAS3.0。ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到3M,是当前世界上最好的汉语词法分析器。

POS = {
    "n": {  # 1. 名词  (1个一类,7个二类,5个三类)
        "n": "名词",
        "nr": "人名",
        "nr1": "汉语姓氏",
        "nr2": "汉语名字",
        "nrj": "日语人名",
        "nrf": "音译人名",
        "ns": "地名",
        "nsf": "音译地名",
        "nt": "机构团体名",
        "nz": "其它专名",
        "nl": "名词性惯用语",
        "ng": "名词性语素"
    },
    "t": {  # 2. 时间词(1个一类,1个二类)
        "t": "时间词",
        "tg": "时间词性语素"
    },
    "s": {  # 3. 处所词(1个一类)
        "s": "处所词"
    },
    "f": {  # 4. 方位词(1个一类)
        "f": "方位词"
    },
    "v": {  # 5. 动词(1个一类,9个二类)
        "v": "动词",
        "vd": "副动词",
        "vn": "名动词",
        "vshi": "动词“是”",
        "vyou": "动词“有”",
        "vf": "趋向动词",
        "vx": "形式动词",
        "vi": "不及物动词(内动词)",
        "vl": "动词性惯用语",
        "vg": "动词性语素"
    },
    "a": {  # 6. 形容词(1个一类,4个二类)
        "a": "形容词",
        "ad": "副形词",
        "an": "名形词",
        "ag": "形容词性语素",
        "al": "形容词性惯用语"
    },
    "b": {  # 7. 区别词(1个一类,2个二类)
        "b": "区别词",
        "bl": "区别词性惯用语"
    },
    "z": {  # 8. 状态词(1个一类)
        "z": "状态词"
    },
    "r": {  # 9. 代词(1个一类,4个二类,6个三类)
        "r": "代词",
        "rr": "人称代词",
        "rz": "指示代词",
        "rzt": "时间指示代词",
        "rzs": "处所指示代词",
        "rzv": "谓词性指示代词",
        "ry": "疑问代词",
        "ryt": "时间疑问代词",
        "rys": "处所疑问代词",
        "ryv": "谓词性疑问代词",
        "rg": "代词性语素"
    },
    "m": {  # 10. 数词(1个一类,1个二类)
        "m": "数词",
        "mq": "数量词"
    },
    "q": {  # 11. 量词(1个一类,2个二类)
        "q": "量词",
        "qv": "动量词",
        "qt": "时量词"
    },
    "d": {  # 12. 副词(1个一类)
        "d": "副词"
    },
    "p": {  # 13. 介词(1个一类,2个二类)
        "p": "介词",
        "pba": "介词“把”",
        "pbei": "介词“被”"
    },
    "c": {  # 14. 连词(1个一类,1个二类)
        "c": "连词",
        "cc": "并列连词"
    },
    "u": {  # 15. 助词(1个一类,15个二类)
        "u": "助词",
        "uzhe": "着",
        "ule": "了 喽",
        "uguo": "过",
        "ude1": "的 底",
        "ude2": "地",
        "ude3": "得",
        "usuo": "所",
        "udeng": "等 等等 云云",
        "uyy": "一样 一般 似的 般",
        "udh": "的话",
        "uls": "来讲 来说 而言 说来",
        "uzhi": "之",
        "ulian": "连 "  # (“连小学生都会”)
    },
    "e": {  # 16. 叹词(1个一类)
        "e": "叹词"
    },
    "y": {  # 17. 语气词(1个一类)
        "y": "语气词(delete yg)"
    },
    "o": {  # 18. 拟声词(1个一类)
        "o": "拟声词"
    },
    "h": {  # 19. 前缀(1个一类)
        "h": "前缀"
    },
    "k": {  # 20. 后缀(1个一类)
        "k": "后缀"
    },
    "x": {  # 21. 字符串(1个一类,2个二类)
        "x": "字符串",
        "xx": "非语素字",
        "xu": "网址URL"
    },
    "w": {   # 22. 标点符号(1个一类,16个二类)
        "w": "标点符号",
        "wkz": "左括号",  # ( 〔  [  {  《 【  〖 〈   半角:( [ { <
        "wky": "右括号",  # ) 〕  ] } 》  】 〗 〉 半角: ) ] { >
        "wyz": "全角左引号",  # “ ‘ 『
        "wyy": "全角右引号",  # ” ’ 』
        "wj": "全角句号",  # 。
        "ww": "问号",  # 全角:? 半角:?
        "wt": "叹号",  # 全角:! 半角:!
        "wd": "逗号",  # 全角:, 半角:,
        "wf": "分号",  # 全角:; 半角: ;
        "wn": "顿号",  # 全角:、
        "wm": "冒号",  # 全角:: 半角: :
        "ws": "省略号",  # 全角:……  …
        "wp": "破折号",  # 全角:——   --   ——-   半角:---  ----
        "wb": "百分号千分号",  # 全角:% ‰   半角:%
        "wh": "单位符号"  # 全角:¥ $ £  °  ℃  半角:$
    }
}
           

3 jieba 分词与pyltp分词

测试了一个例子,发现jieba在该例子中不准确:

jieba分词及词性标注结果:

>>> a = '这本书很好'
>>> import jieba
>>> ws = jieba.cut(a) #分词
>>> for i in ws:
...     print i
...
这
本书
很
好
>>> import jieba.posseg as pseg   #词性标注
>>> ws = pseg.cut(a)
>>> for i in ws:
...     print i
...
这/r
本书/r
很/d
好/a
           

哈工大ltp结果:

from pyltp import Segmentor
segmentor = Segmentor()
segmentor.load('/Users/a000/git/ltp_data/cws.model')
words = segmentor.segment('这本书很好')
for i in words:
    print i

分词结果:
这
本
书
很
好

from pyltp import Postagger
poser = Postagger()
poser.load('/Users/a000/git/ltp_data/pos.model')
words = poser.postag(words)
print words
for i in words:
    print i
词性标注结果:
r
q
n
d
a
           

继续阅读