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中文玩法就这些了,还是挺不错的。

自然语言7_NLTK中文语料库sinica_treebank的更多相关文章

  1. NLTK中文语料库sinica_treebank

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

  2. python 基础及资料汇总

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

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

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

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

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

  5. NLP 自然语言处理实战

    前言 自然语言处理 ( Natural Language Processing, NLP) 是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和 ...

  6. 【HanLP】HanLP中文自然语言处理工具实例演练

    HanLP中文自然语言处理工具实例演练 作者:白宁超 2016年11月25日13:45:13 摘要:HanLP是hankcs个人完成一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环 ...

  7. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  8. 【NLP】基于自然语言处理角度谈谈CRF(二)

    基于自然语言处理角度谈谈CRF 作者:白宁超 2016年8月2日21:25:35 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...

  9. Atitit 自然语言处理原理与实现 attilax总结

    Atitit 自然语言处理原理与实现 attilax总结 1.1. 中文分词原理与实现 111 1.2. 英文分析 1941 1.3. 第6章 信息提取 2711 1.4. 第7章 自动摘要 3041 ...

随机推荐

  1. 各组对final发布产品的排名

    结果 排名 组名 项目简称 组长 平均 方差 1 新蜂 俄罗斯 武志远 2 0.80 2 天天向上 连连看 王森 2.50 1.90 3 奋斗吧兄弟 食物链 黄兴 2.83 0.97 4 金洲勇士 考 ...

  2. PHP中生成json信息的方法

    <?php //php中生成json信息 //json_encode(数组/对象) $color = array('red','blue','green'); //[索引数组] echo jso ...

  3. RAID的简单介绍

    该文章全部复制转载于:http://blog.jobbole.com/83808/,只为做笔记供自己查看 简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能 ...

  4. iOS开发中的错误整理,Changing the delegate of a tab bar managed by a tab bar controller is not allowed

    iOS [错误:'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.'] 错误:'Ch ...

  5. iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片

    Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...

  6. poj3177 && poj3352 边双连通分量缩点

    Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12676   Accepted: 5368 ...

  7. 725C

    找出连通块,然后找出颜色最大的,用总数减去 #include<iostream>#include<map>#include<cstring>#include< ...

  8. json2form实例

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  9. windows下为mysql添加日志

    mysql的配置文件 [mysqld] …… log-error="D:/phpStudy/log/mysql/mysql_log_err.txt" log="D:/ph ...

  10. Pointcut is not well-formed: expecting 'name pattern' at character position

    配置aop报错:原因是配置切点表达式的时候报错了, 星号后面没有加空格: <aop:config> <aop:pointcut id="transactionPointcu ...