作业笔记10_nltk

加载nltk.book中的text,完成以下问题

  1. 在text2中有多少个词?有多少个不同的词?
  2. 尝试写一个切片表达式提取text2中最后两个词。
  3. 查找text5中的2-gram搭配,并统计搭配频数

伯乐在线:Python自然语言处理入门

下载安装nltk与nltk_data

  1. nltk包的安装

    • 在Mac和Unix系统上
      • 终端运行:sudo pip install -U nltk
      • 需要numpy支持
    • 在Windows系统上
      • tar包,下载地址
      • 解压,在cmd命令行进入解压好的文件夹,执行python setup.py install
    • 进入python环境,运行import nltk,没报错就行。
  2. 下载nltk_data

    • 方法1:python环境下执行以下代码:

      import nltk
      nltk.download()
      

      出现一个下载窗口,选择路径,下载需要的数据包。

      特点,很慢。我下载过无数次都没成功。

    • 方法2:手动下载nltk_data,放到python的lib中。

      • 老师给的资料试了一下,加载出错。又从新找资源。

      • 下载地址:GitHub,packages文件夹下的内容就就是nltk_data。

      • 把下好的nltk_data放到python目录下。其实用户目录也可以。看出错提醒这里,它会在这些目录下查找。

        所以放在任意一个目录下面都行,方便自己找就好了。

  3. 一个出错问题的解决过程

    在加载nltk.book的时候出错了,先看出错的代码:

    >>> from nltk.book import *
    *** Introductory Examples for the NLTK Book ***
    Loading text1, ..., text9 and sent1, ..., sent9
    Type the name of the text or sentence to view it.
    Type: 'texts()' or 'sents()' to list the materials.
    text1: Moby Dick by Herman Melville 1851
    text2: Sense and Sensibility by Jane Austen 1811
    text3: The Book of Genesis
    text4: Inaugural Address Corpus
    text5: Chat Corpus
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\book.py", line 35, in <module>
        text6 = Text(webtext.words('grail.txt'),
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\corpus\util.py", line 99, in __getattr__
        self.__load()
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\corpus\util.py", line 61, in __load
        root = nltk.data.find('corpora/%s' % self.__name)
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\data.py", line 628, in find
        return find(modified_name, paths)
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\data.py", line 614, in find
        return ZipFilePathPointer(p, zipentry)
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\compat.py", line 561, in _decorator
        return init_func(*args, **kwargs)
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\data.py", line 469, in __init__
        zipfile = OpenOnDemandZipFile(os.path.abspath(zipfile))
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\compat.py", line 561, in _decorator
        return init_func(*args, **kwargs)
      File "C:\Users\yishikeji-05\Anaconda3\lib\site-packages\nltk\data.py", line 979, in __init__
        zipfile.ZipFile.__init__(self, filename)
      File "C:\Users\yishikeji-05\Anaconda3\lib\zipfile.py", line 1026, in __init__
        self._RealGetContents()
      File "C:\Users\yishikeji-05\Anaconda3\lib\zipfile.py", line 1093, in _RealGetContents
        raise BadZipFile("File is not a zip file")
    zipfile.BadZipFile: File is not a zip file
    
    • 错误类型是BadZipFile,需要的文件不是zip格式的file。然后我就各种查啊搜啊。均无果。

    • 然后,仔细看了一下错误日志,最上面显示出错的代码行是text6 = Text(webtext.words('grail.txt')这里。

    • 所以应该是webtext这个文件的问题。于是我就去nltk_data中找webtext。果然有个叫webtext.zip的压缩包。打开里面果然有grail.txt这个文件的,那解压了试试吧。

    >>> from nltk.book import *
    *** Introductory Examples for the NLTK Book ***
    Loading text1, ..., text9 and sent1, ..., sent9
    Type the name of the text or sentence to view it.
    Type: 'texts()' or 'sents()' to list the materials.
    text1: Moby Dick by Herman Melville 1851
    text2: Sense and Sensibility by Jane Austen 1811
    text3: The Book of Genesis
    text4: Inaugural Address Corpus
    text5: Chat Corpus
    text6: Monty Python and the Holy Grail
    text7: Wall Street Journal
    text8: Personals Corpus
    text9: The Man Who Was Thursday by G . K . Chesterton 1908
    >>>
    

    呵呵哒,神奇的好了。

可以做作业了

上面已经加载过nltk和nltk.book了,就在命令行继续做吧。

  1. 在text2中有多少个词?有多少个不同的词?

    >>> len(text2)
    141576
    >>> len(set(text2))
    6833
    
  2. 尝试写一个切片表达式提取text2中最后两个词。

    直接当做一个list来选取最后两个项目能行吗?

    >>> text2[-2:]
    ['THE', 'END']
    
  3. 查找text5中的2-gram搭配,并统计搭配频数

    代码部分

    import nltk
    from nltk.book import text2,text5
    import re
    from collections import OrderedDict
    
    # text2的单词数,和无重复单词数
    print(len(text2),len(set(text2)))
    
    # text2的最后两个词
    print(text2[-2:])
    
    # text5中的2-gram搭配,统计搭配频数
    def getNgrams(input, n):
        output = dict()
        for i in range(len(input)-n+1):
            newNGram = " ".join(input[i:i+n])
            if newNGram in output:
                output[newNGram] += 1
            else:
                output[newNGram] = 1
        return output
    
    ngrams = getNgrams(text5, 2)
    print(ngrams)
    ngrams_freq = OrderedDict(sorted(ngrams.items(), key=lambda t: t[1], reverse=True))
    print(ngrams_freq)
    

    结果输出:

    2-grams结果:

    image

    词频统计结果:

    image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容