zoukankan      html  css  js  c++  java
  • 自然语言7_NLTK中文语料库sinica_treebank

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程)

    https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

    http://www.hankcs.com/program/python/nltk-chinese-corpus-sinica_treebank.html

    NLTK包含Sinica (中央研究院)提供的繁体中文语料库,其在Python环境下的显示有些讲究。

    NLTK sinica_treebank 显示中文

    在IDLE中如果直接查看的话会显示十六进制码:

    1. >>> from nltk.corpus import sinica_treebank
    2. >>> sinica_treebank.words()
    3. ['xe4xb8x80', 'xe5x8fx8bxe6x83x85', ...]

    如果想在IDLE中查看这些进制码对应的中文的话,可以:

    1. >>> print 'xe4xb8x80'

    NLTK中文词性标注

    一个一个手动print太蠢了,一段代码自动让它好看起来:

    1. # -*- coding:utf-8 -*-
    2. # Filename: sinica_treebank.py
    3. # Author:hankcs
    4. # Date: 2014-04-08 上午11:44
    5. import nltk
    6. from nltk.corpus import sinica_treebank
    7.  
    8. sinica_text = nltk.Text(sinica_treebank.words())
    9. print sinica_text
    10. for (key, var) in sinica_treebank.tagged_words()[:8]:
    11.     print '%s/%s' % (key, var),

    输出:

    1. <Text: 一 友情 嘉珍 和 我 住在 同一條 巷子...>
    2. 一/Neu 友情/Nad 嘉珍/Nba 和/Caa 我/Nhaa 住在/VC1 同一條/DM 巷子/Nab

    NLTK中文句法树

    1. >>> sinica_treebank.parsed_sents()[15].draw()

    真是神奇的Python!

    搜索中文文本

    在IDLE中不方便调编码,还是写进py文件吧:

    1. # -*- coding:utf-8 -*-
    2. # Filename: sinica_treebank.py
    3. # Author:hankcs
    4. # Date: 2014-04-08 上午11:44
    5. import nltk
    6. from nltk.corpus import sinica_treebank
    7.  
    8. sinica_text = nltk.Text(sinica_treebank.words())
    9. print sinica_text.concordance('我')

    输出:

    1. Building index...
    2. Displaying 25 of 724 matches:
    3.                                        住在 同一條 巷子 我們  
    4. �� 一起 回家 有一天 上學      等候   門鈴 
    5. ��鈴  沒有 任何 動靜 正當   離開    突然 傳來 
    6. ��   大聲       媽媽 暈倒  嘉珍 抓起  
    7.   媽媽 暈倒  嘉珍 抓起    急忙     進入
    8.     一樣 這種 情景   嚇壞  怎麼辦 嘉珍 不停 
    9. ��停  哭泣 聲音 有些 顫抖   腦海  頓時 一片 空白 
    10.  怎麼辦     一會兒      爸爸   出差
    11.   出差  嘉珍   眼淚  握住   雙手    
    12. �� 這時 有個 念頭 突然 閃過   眼前      一一
    13.  念頭 突然 閃過   眼前      一一九  救護�
    14.     安慰  不要 著急      不久 救護車  
    15. ��上 救護車 嘉珍 上車     謝謝   幫忙   
    16.     謝謝   幫忙        不用  
    17. ��       不用   因為 我們  好朋友  無�
    18. 員外    並且       悶悶不樂 是不是 進京
    19. ��       不用     只是  一份 心力 而�
    20. ��     不用     只是  一份 心力 而已 以�
    21.  銀子   眼淚  謝謝    知道  怎麼  報答  
    22.    巡撫   不必    不必 回報   快樂  
    23.   不必    不必 回報   快樂  閱讀課  國語�
    24. �� 這一組  讀書 心得 報告  第一個 站起來 發言 我們 
    25. �過   成為 知心  朋友  說完 之後 組長 站起來 補充
    26. 清理 火山灰 而且 欣賞 落日  喜歡 這種 自由自在  生活
    27.     喜歡 虛偽    覺得  王子  正直 最後 
    28. None

    这里面的�大概是字体的原因吧,毕竟不是繁体中文系统。本文的原作者指出:

    concordance 會出現 � 的原因是因為這個字的被切一半 , 因為 UTF-8 編碼中文要有三個byte ‘xe4xb8x80′ , 出現�� 表示被切成這樣 ‘xe4xb8′, 少一個 byte

    茅塞顿开。

    控制台乱码的话可能需要decode成unicode然后在encode成gb编码:

    1. = "中文"
    2.  
    3. if isinstance(s, unicode):
    4.     # s=u"中文"
    5.     print s.encode('gb2312')
    6. else:
    7.     # s="中文"
    8.     print s.decode('utf-8').encode('gb2312')

    NLTK计算中文高频词

    1. >>> sinica_fd=nltk.FreqDist(sinica_treebank.words())
    2. >>> top100=sinica_fd.items()[0:100]
    3. >>> for (x,y) in top100:
    4. print x,y
    5.  
    6.  6776
    7.  1482
    8.  1331
    9.  1317
    10.  1190
    11.  759
    12.  724
    13.  688
    14.  627
    15.  612
    16.  580
    17.  542
    18.  526
    19.  467
    20.  417
    21.  404
    22.  389
    23. 我們 384

    初步的NLTK中文玩法就这些了,还是挺不错的。

    python风控评分卡建模和风控常识(博客主亲自录制视频教程)

  • 相关阅读:
    一种Hive性能调优方法(补充)
    Leetcode之MySQL练习题
    Hive的10种优化总结
    SQL练习题(1-76)学习笔记(来源于牛客网)
    SQL练习题47:将employees表中的所有员工的last_name和first_name通过(')连接起来
    SQL练习题46:牛客每次考试完,都会有一个成绩表(grade),请你写一个sql语句查询各个岗位分数升序排列之后的中位数位置的范围,并且按job升序排序
    SQL练习题45:
    SQL练习题44:牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。
    CDN-jQuery
    [转]vue和微信小程序的区别、比较
  • 原文地址:https://www.cnblogs.com/webRobot/p/6068789.html
Copyright © 2011-2022 走看看