《NLTK基础教程》读书笔记 002期

今天上来的第一个坑出现在使用nltk的tokensize,终端报出了如下错误

LookupError:
**********************************************************************
  Resource ?[93mpunkt?[0m not found.
  Please use the NLTK Downloader to obtain the resource:

  ?[31m>>> import nltk
  >>> nltk.download('punkt')
  ?[0m
  Searched in:
    - 'C:\\Users\\Admin/nltk_data'
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
    - 'C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python35\\nltk_data'
    - 'C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python35\\share\\nltk_data'
    - 'C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python35\\lib\\nltk_data'
    - 'C:\\Users\\Admin\\AppData\\Roaming\\nltk_data'
    - ''
**********************************************************************

直接按照指令

import nltk
nltk.download('punkt')

进行下载操作,然后就搞定了。如果出现连接时间过长,可以直接访问网页:https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
然后使用迅雷或其他下载工具进行下载,然后将文件保存于
C:\Users\你的用户名\AppData\Roaming\nltk_data\tokenizers
并选择解压到punkt\,关于隐藏文件如何查看等文件夹选项,在这里不再赘述。

发现结果也稍有不同,应该nltk库自己内部更新过了

[' This is an example sent.', 'The sentence splitter will split on sent markers.', 'Ohh really !', '!']

书上的叹号应该是多打了几个……


Snowball这个库变成了小写

from nltk.stem.snowball import SnowballStemmer

在使用wordnet的时候,同样出现了今天遇到的第一个错误,也同样用相同的方法来解决。
仍然放一个URL

https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/wordnet.zip

如果直接按照书上24-25页的代码,我们发现结果仍然是ate,个人认为这同样也是因为库的更新,在lemmatize中多了另外一个argument:pos,用来衡量喂进去的单词是动词名词等,参考网页:https://stackoverflow.com/questions/25534214/nltk-wordnet-lemmatizer-shouldnt-it-lemmatize-all-inflections-of-a-word

所以我们把pos设为动词,如下代码,就可以得到eat

wlem = WordNetLemmatizer()
print(wlem.lemmatize('ate', pos='v'))

同样因为库的更新,停用词移除的结果也发生了改变,如下

['This', 'test']

不过调整开头字母大小写之后,结果变成了只有['test']

扫描二维码关注公众号,回复: 2102521 查看本文章

一些开放性的答案挺令人仔细琢磨的:

  • 在完成停用词一处之后,我们还可以执行其他NLP操作吗?

    答案是否定的,这是不可能的。所有典型的NLP应用,如词性标注、断句处理等,都需要根据上下文语境来为既定文本生成相关的标签。一单我们移除了停用词,其上下文环境也就不存在了。

  • 为什么在印度语、中文这样的语言中,词干提取器会变得难以实现?

    因为印度语的词法很丰富,而中文则是标识化的难度很高,它们都在符号的标准化上遇到了一定的挑战,因此词干提取器实现起来要困难得多。

猜你喜欢

转载自blog.csdn.net/bright_silmarillion/article/details/80955707
今日推荐