zoukankan      html  css  js  c++  java
  • NLTK 基本操作


    一、标识化处理(分词/分句)

    标识化处理:将原生字符串分割为一系列有意义的分词。
    机器要理解的最小处理单位为单词。所以标识化处理外,不适合再做进一步的操作。

    标识器(tokenizer):
    1、split() 分割;
    2、正则;
    3、NLTK 内置方法:nltk.tokenize.word_tokenize() 分词,nltk.tokenize.sent_tokenize() 分句;regex_tokenize() 用户可自定义的标识器。
    4、其他大部分标识器 都可以通过 继承正则表达式 的标识器实现,也可以利用不同模式 来构建一个 具体的标识器。


    word_tokenize 和 split 的优势;
    word_tokenize 更通用、可面向所有类型语料库。


    以上是 NLTK 内置的 语句边界检测算法;

    nltk 更适合处理英文,英文使用空格将一个个单词分开;


    from nltk.tokenize import word_tokenize, sent_tokenize  
     
    str = 'arXiv is a free distribution service and an open-access archive for 1,812,439 scholarly articles. Materials on this site are not peer-reviewed by arXiv.'
    
    # tokens = word_tokenize(str) 
    # 一般转化为小写来分析
    tokens = [word.lower() for word in tokens]  
    
    tokens
     '''
    ['arXiv',
     'is',
     'a',
     'free',
     'distribution',
     'service',
     'and',
     'an',
     'open-access',
     'archive',
     'for',
     '1,812,439',
     'scholarly',
     'articles',
     '.',
     'materials',
     'on',
     'this',
     'site',
     'are',
     'not',
     'peer-reviewed',
     'by',
     'arXiv',
     '.']
    '''
     
    # 分句
    param = str
    sents = sent_tokenize(param)
    
    
    '''
    ['arXiv is a free distribution service and an open-access archive for 1,812,439 scholarly articles.',
     'Materials on this site are not peer-reviewed by arXiv.']
    '''
     
    type(sents)  # list
    

    自定义语句分离

    from nltk.tokenize import  punkt
    tokenizer = punkt.PunktSentenceTokenizer()
    

    该预置语句分离器支持 17 种语言;
    我们只需要为其指定相关配方对象即可。
    一般而言,只要提供一个相关种类的文本语料。


    二、Text 对象

    import nltk
    from nltk.text import Text # Text 模块
    
    # 查看 Text 对象帮助
    help(nltk.text)
     
    # 创建 Text 对象
    t = Text(tokens)
     
    # 查看某个词的个数
    t.count('code')  # 1
     
    # 查看位置索引
    t.index('code')   # 10 
     
    %matplotlib inline
    t.plot(8)  # 查看最常见的 词频 分布
    

    output_19_0.png


  • 相关阅读:
    Android中的IMEI
    《JAVA与模式》之适配器模式(转)
    海量日志数据__怎么在海量数据中找出重复次数最多的一个
    Java中的IO流系统详解(转载)
    获取网络文件长度问题
    内存泄漏
    Ubuntu12.04不能连接小米开发(转)
    Java/C++中数组的区别
    Android批量插入数据到SQLite数据库
    泛型编程 基础
  • 原文地址:https://www.cnblogs.com/fldev/p/14370959.html
Copyright © 2011-2022 走看看