【自然语言处理】3.1NLTK工具集

NLTK是Python中的自然语言处理工具包,提供了丰富的语料库、词典资源和处理工具,如WordNet。文章介绍了如何安装NLTK,下载语料库,以及使用NLTK进行分词、词性标注、词干提取和句法分析等基础任务。此外,还涉及到了情感分析相关的SentiWordNet和命名实体识别等高级应用。
摘要由CSDN通过智能技术生成

3.1 NLTK工具集

介绍

  • NLTK为自然语言处理集
  • 多语料库(Corpora)
  • 词典资源(Lexicon),如WordNet
  • 基本自然语言处理工具集
    • 标记解析(Tokenization)
    • 词干提取(Stemming)
    • 词性标注(POS Tagging)
    • 句法分析(Syntactic Parsing)
  • 安装(command+R), pip install nltk

3.1.1 常见语料库和词典资源

  • 下载
    • nltk.download() 方法
    import nltk
    nltk.download() 
     ```
    
    1. 停用词
    • 因为语义不重要(如冠词),可以加快处理速度,所以减少规模,这些词语称为stopwords
       from nltk.corpus import stopwards
       stopwards.words()
      
    1. 常见语料库
    • 文本数据集(图片,聊天记录等)
      • 未标注语料库(raw text/生语料库/生文本)
        • 使用下载方法如上所示,直接访问原始文本文件(目录为下载的时候选择的存储目录)
        • 调用NLTK提供的功能
          import nltk
          
        nltk.download(‘gutenberg’)
        from nltk.corpus import gutenberg
        gutenberg.raw(“austen-emma.txt”)
      • 人工标注语料库(Annotated corpus)```
        • 关于某项任务的结果(eg:句子记性语料库(sentence_polarity)包含了褒贬中性词,而且已经预处理过)
        • sentence_polarity使用方法
          • sentence_polarity.categories返回的是褒贬类信息,neg和pos
          • sentence_polarity.words(categories=‘pos’)选择语料库全部单词列表
        		[(sentence, category) for category in sentence_polarity.categories()
        		    for sentence in sentence_polarity.sents(categories=category)]
        		    # 返回的是一个大列表,每个元素为一个句子的单词列表和对应褒贬构成元组
        
    1. 常用词典
      1. WordNet
      • 英语词义词典,Thesaurus定义了同义词集合(Synset),同义词集合有相同意义的词义组成。Gloss(剪短的释义),不同用一次集合之间具有一定关系
        • 使用图示
           from nltk.corpus import wordnet
           nltk.download('wordnet')
           syns = wordnet.synsets("bank")
           # 返回的bank的全部十八个词义的synset同义词集合
           print(syns[0].name)
           # 返回的是bank的第一个词义的名称,其中n代表名词
           syns[0].definition()
           # 返回bank的第二个词义的定义,即为银行的定义,返回的是英语解释
           syns[0].examples() 
           # 返回的是bank的第一个使用实例
           syns[0].hypernyms()
           # 返回的是bank第一次词义的同义词集合
           dog = wordnet.synset('dog.n.01')
           cat = wordnet.synset('cat.n.01')
           dog.wup_similarity(cat)
          # 计算两个同义词之间的Wu-Palmer的相似度
          
    • synset返回全部词义,definition返回定义,examples返回使用例子,hypernyms返回第一个词义的同义词集合,wup_similarity返回Wu-Palmer相似度
    1. SentiWordNet
    • 是基于WordNet的标注词语的情感倾向词典,每个词语标注了褒义贬义中性。
    • 使用图示
		from nltk.corpus import sentiwordnet
		sentiwordnet.senti_synset('good.a.01')
		# 词good在形容词adjective下的第一语义,返回的是Poscore和Negscore

3.1.2 常见自然语言处理工具集

    1. 分词
    • 需要将较长句子切分为干句子(简单规则分句),但存在例外情况比如(Mr.)
    • sent_tokenize图示
    from nltk.tokenize import sent_tokenize
    text = gutenberg.raw("austen-emma.txt")
    sentence = sent_tokenize(text)
    # 对Emma小说进行全文分句
    print(sentence[100])
    # 显示其中一个分句
    
    1. 标记标注
    • 一个橘子是有若干标记(Token)按照顺序构成的,而且标记可以是一个词语/标点符号(自然语言处理最基本输入单元),而且将橘子分隔为标记的过程叫做标记解析(Tokenization),工作之一是讲标点符号和前面的单词拆分
    • word_tokenize图示
    from nltk.tokenize import word_tokenize
    word_tokenize(sentence[100])
    
    1. 词性标注
    • NLTK提供词性标注器(POS Tagger),NN为名词,VBP为动词,使用Penn Treebank(宾州树库)标注标准。而而且有词性标记含义的查询功能
    • pos_tag使用方法图示
    from nltk import pos_tag
    pos_tag(word_tokenize("They sat by the fire."))
    
    • 词性标注含义查询图示
    nltk.help.upenn_tagset('NN')
    nltk.help.upenn_tagset('VBP')
    nltk.help.upenn_tagset() # 返回所有词性的标注集以及各种词性的示例
    
    1. 其他工具
    • 命名实体识别
    • 组快分析(Chunking)
    • 句法分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值