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. ['\xe4\xb8\x80', '\xe5\x8f\x8b\xe6\x83\x85', ...]

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

  1. >>> print '\xe4\xb8\x80'

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. sinica_text = nltk.Text(sinica_treebank.words())
  8. print sinica_text
  9. for (key, var) in sinica_treebank.tagged_words()[:8]:
  10. 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. sinica_text = nltk.Text(sinica_treebank.words())
  8. 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. s = "中文"
  2. if isinstance(s, unicode):
  3. # s=u"中文"
  4. print s.encode('gb2312')
  5. else:
  6. # s="中文"
  7. 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. 的 6776
  6. 、 1482
  7. 在 1331
  8. 是 1317
  9. 了 1190
  10. 有 759
  11. 我 724
  12. 他 688
  13. 就 627
  14. 上 612
  15. 和 580
  16. 也 542
  17. 不 526
  18. 人 467
  19. 都 417
  20. 與 404
  21. 著 389
  22. 我們 384

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

NLTK中文语料库sinica_treebank的更多相关文章

  1. 自然语言7_NLTK中文语料库sinica_treebank

    http://www.hankcs.com/program/python/nltk-chinese-corpus-sinica_treebank.html NLTK包含Sinica (中央研究院)提供 ...

  2. 自然语言处理——NLTK中文语料库语料库

    Python NLTK库中包含着大量的语料库,但是大部分都是英文,不过有一个Sinica(中央研究院)提供的繁体中文语料库,值得我们注意. 在使用这个语料库之前,我们首先要检查一下是否已经安装了这个语 ...

  3. python 基础及资料汇总

    Python 包.模块.类以及代码文件和目录的一种管理方案     Numpy 小结   用 Python 3 的 async / await 做异步编程  K-means 在 Python 中的实现 ...

  4. 学习笔记CB002:词干提取、词性标注、中文切词、文档分类

    英文词干提取器,import nltk,porter = nltk.PorterStemmer(),porter.stem('lying') . 词性标注器,pos_tag处理词序列,根据句子动态判断 ...

  5. 自然语言9_NLTK计算中文高频词

    以下代码仅限于python2 NLTK计算中文高频词 >>> sinica_fd=nltk.FreqDist(sinica_treebank.words()) >>> ...

  6. python之自然语言处理入门(一)

    前言 NTLK是著名的Python自然语言处理工具包,记录一下学习NTLK的总结. 安装nltk pip install nltk # 测试 import nltk 安装相关的包 import nlt ...

  7. nltk.download()出错解决

    http://blog.csdn.net/joey_su/article/details/17289621 官方下载地址 http://www.nltk.org/nltk_data/ 把python自 ...

  8. 【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理

    干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的 ...

  9. 【NLP】Python NLTK处理原始文本

    Python NLTK 处理原始文本 作者:白宁超 2016年11月8日22:45:44 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开 ...

随机推荐

  1. 开发错误记录8:Unable to instantiate application com

    开发错误记录8:Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication 这是因为在And ...

  2. springMVC+mybatis 增删该操作后判断影响行数一直返回-2147482646

    MyBatis发现更新和插入返回值一直为"-2147482646"的错误是由defaultExecutorType设置引起的,如果设置为BATCH,更新返回值就会丢失.mybati ...

  3. 简单Matrix 的方法说明记录

    查找资料加上自己理解  ,简单说明Android中Matrix怎么用(新手有错误的地方,希望指正,主要自己记录学习用的) Matrix包含一个3 X 3的矩阵,专门用于图像变换匹配. Matrix提供 ...

  4. 自定义jstl标签库

    开发环境:Spring+SpringMVC +Maven +Mybatis JSTL 标签库的配置: 导入对应的 jstl.jar 和 standard.jar ,我使用的配置如下: <prop ...

  5. redis 可视化工具

    Redis Desktop Manager 下载 phpRedisAdmin 是一个用php管理redis的工具 下载

  6. 递归O(NlgN)求解逆序数

    导言 第一次了解到逆序数是在高等代数课程上.当时想计算一个数列的逆序数直觉就是用两重循环O(n^2)暴力求解.现在渐渐对归并算法有了一定的认识,因此决定自己用C++代码小试牛刀. 逆序数简介 由自然数 ...

  7. Hive 窗口函数、分析函数

    1 分析函数:用于等级.百分点.n分片等 Ntile 是Hive很强大的一个分析函数. 可以看成是:它把有序的数据集合 平均分配 到 指定的数量(num)个桶中, 将桶号分配给每一行.如果不能平均分配 ...

  8. [日常训练]常州集训day2

    T1 Description 给定$N$个点,问这$N$个点能构成的三角形个数. Input 第一行一个整数$N$,代表点数. 接下来$N$行,每行两个非负整数$X,Y$,表示一个点的坐标. Outp ...

  9. Java容器之旅:容器基础知识总结

    下图展示了Java容器类库的完备图,包括抽象类和遗留构件(不包括Queue的实现). 常用的容器用黑色粗线框表示,点线框表示接口,虚线框表示抽象类,实线框表示类,空心箭头表示实现关系.Produce表 ...

  10. 【csuoj1014】 西湖三人行

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1014 (题目链接) 题意 从无向图图上一点到达另一点,可以步行,搭公交或者是打的,不同的交通方式花 ...