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

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

时间: 2024-10-03 20:53:20

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

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

Python NLTK库中包含着大量的语料库,但是大部分都是英文,不过有一个Sinica(中央研究院)提供的繁体中文语料库,值得我们注意. 在使用这个语料库之前,我们首先要检查一下是否已经安装了这个语料库. >>>import nltk >>>nltk.download() 检查箭头所指的sinica_treebank是否安装,如果未安装,则首先要进行安装. 安装完毕后就可以使用了 import nltk from nltk.corpus import sinica_t

深度学习与自然语言处理之四:卷积神经网络模型(CNN)

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 大纲如下: 1.CNN基础模型 2.单CNN模型的改进    2.1对输入层的改进    2.2Convolution层的改进    2.3Sub-Sampling层的改进    2.4全连接层的改进 3.多CNN模型的改进 4.探讨与思考 扫一扫关注微信号:"布洛卡区" ,深度学习在自然语言处理等智能应用的技术研讨与科普公众号.

Python自然语言处理工具小结

Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 1 Python 的几个自然语言处理工具 NLTK:NLTK 在用 Python 处理自然语言的工具中处于领先的地位.它提供了 WordNet 这种方便处理词汇资源的借口,还有分类.分词.除茎.标注.语法分析.语义推理等类库. Pattern:Pattern 的自然语言处理工具有词性标注工具(Part-Of-Speech Tagger),N元搜索(n-gram search),情感分析(sentiment a

大数据文本分析:灵玖自然语言中文语义分词系统

自然语言通常是指一种自然地随文化演化的语言.英语.汉语.日语为自然语言的例子,而世界语则为人造语言,即是一种为某些特定目的而创造的语言. 自然语言具备两个属性:语言属性与自然属性."语言"属性表现为公认的某些约定俗成的内在规律性;"自然"属性是说并不存在某个人为制造的.严格的语法规则体系来约定人们的语言表达方式,这是和程序设计语言大相径庭的.自然语言需要遵循一定的内在规律,但更大程度上是"存在即合理". 一个自然语言处理系统必须考虑许多语言自身与

【行业聚焦】畅捷通用自然语言技术颠覆企业应用人机交互模式!

2016年7月30日,由崔牛会主办的主题为"小技术·大场景"的2016中国企业互联网技术论坛圆满落幕.活动现场20多位顶级技术专家,近千名行业技术大咖一起交流学习,商讨技术对未来商业模式的影响 ,洞察TO B领域的趋势和变革.畅捷通深度参与了此次大会,技术委员会主席李鲲带来了主题分享:自然语言处理在企业应用领域的实践,与行业专家一起深度讨论了企业SaaS未来的发展趋势. 颠覆企业级人机交互自然语言技术 自然语言处理技术正在日常生活中迅速普及,并给大家带来了很多方便.畅捷通经过三年多的技

深度学习与自然语言处理(2)_斯坦福cs224d Lecture 2

原文作者:Rohit Mundra, Richard Socher 原文翻译:@熊杰([email protected]) && @王昱森 内容调整与校对:寒小阳 && 龙心尘 特别鸣谢:@面包包包包包同学的帮助 时间:2016年6月 出处:http://blog.csdn.net/han_xiaoyang/article/details/51648483 http://blog.csdn.net/longxinchen_ml/article/details/5164853

Python自然语言工具包(NLTK)入门

在本期文章中,小生向您介绍了自然语言工具包(Natural Language Toolkit),它是一个将学术语言技术应用于文本数据集的 Python 库.称为“文本处理”的程序设计是其基本功能:更深入的是专门用于研究自然语言的语法以及语义分析的能力. 鄙人并非见多识广, 语言处理(linguistic processing) 是一个相对新奇的领域.如果在对意义非凡的自然语言工具包(NLTK)的说明中出现了错误,请您谅解.NLTK 是使用 Python 教学以及实践计算语言学的极好工具.此外,计

基于并行化的神经网络和复旦中文语料库,构建中文概率语言模型

本文旨在基于复旦中文语料库和神经网络模型构建中文的概率语言模型. 统计语言模型的一个目标是找到句子中不同词汇的联合分布,也就是找到一个单词序列出现的概率,一个训练好的统计语言模型可以被应用于语音识别.中文输入法.机器翻译等领域.在神经网络方法被提出之前,一个非常成功的构建语言模型的方法是 n-gram,n-gram 模型学习出统计出给出特定的单词序列时某个单词出现的条件概率,并且通过把一系列重叠的短语拼接起来,获得了模型的泛化能力.然而 n-gram 模型也有很多不如人意的地方.第一, n 的数

自然语言处理怎么最快入门?

http://www.zhihu.com/question/19895141 stanford NLP课程网址 https://class.coursera.org/nlp/lecture 14 个回答 赞同337反对,不会显示你的姓名 吴俣,自然语言处理民工 杨泽.林斌.王汪汪 等人赞同 推荐<数学之美>,这个书写得特别科普且生动形象,我相信你不会觉得枯燥.这个我极力推荐,我相信科研的真正原因是因为兴趣,而不是因为功利的一些东西. 接下来说,<统计自然语言处理基础>这本书,这书实