nltk 订阅
Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。 展开全文
Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。
信息
外文名
Natural Language Toolkit
包含内容
Python模块,数据集和教程
适用领域
NLP领域
中文名
自然语言处理工具包
功    能
NLP的研究和开发
英文简称
NLTK
mount定义
NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发 [1]  。NLTK由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。NLTK包括图形演示和示例数据。其提供的教程解释了工具包支持的语言处理任务背后的基本概念。
收起全文
精华内容
参与话题
问答
  • NLTK使用方法总结

    千次阅读 多人点赞 2019-01-07 15:06:55
    1. NLTK安装与功能描述 2. NLTK词频统计(Frequency) 3. NLTK去除停用词(stopwords) 4. NLTK分句和分词(tokenize) 5. NLTK词干提取 (Stemming) 6. NLTK词形还原(Lemmatization) 7.NLTK词性标注(POS ...

    目录

    1. NLTK安装与功能描述

    2. NLTK词频统计(Frequency)

    3. NLTK去除停用词(stopwords)

     4. NLTK分句和分词(tokenize)

    5. NLTK词干提取 (Stemming)

    6. NLTK词形还原(Lemmatization)  

    7. NLTK词性标注(POS Tag)

    8. NLTK中的wordnet


    NLTK(natural language toolkit)是一套基于python的自然语言处理工具集。

    1. NLTK安装与功能描述

    (1)NLTK安装

      首先,打开终端安装nltk

    pip install nltk

       打开Python终端并输入以下内容来安装 NLTK 包

    import nltk
    nltk.download()

    (2)语言处理任务与相应NLTK模块以及功能描述

    (3)NLTK自带的语料库(corpus)

     在nltk.corpus包下,提供了几类标注好的语料库。见下表

    语料库 说明
    gutenberg 一个有若干万部的小说语料库,多是古典作品
    webtext 收集的网络广告等内容
    nps_chat 有上万条聊天消息语料库,即时聊天消息为主
    brown 一个百万词级的英语语料库,按文体进行分类
    reuters 路透社语料库,上万篇新闻方档,约有1百万字,分90个主题,并分为训练集和测试集两组
    inaugural 演讲语料库,几十个文本,都是总统演说
    from nltk.corpus import brown
    print(brown.categories())   #输出brown语料库的类别
    print(len(brown.sents()))   #输出brown语料库的句子数量
    print(len(brown.words()))   #输出brown语料库的词数量
    
    '''
    结果为:
    ['adventure', 'belles_lettres', 'editorial', 'fiction', 'government', 'hobbies', 
    'humor', 'learned', 'lore', 'mystery', 'news', 'religion', 'reviews', 'romance', 
    'science_fiction']
    57340
    1161192
    '''

    2. NLTK词频统计(Frequency)

    NLTK 中的FreqDist( ) 类主要记录了每个词出现的次数,根据统计数据生成表格绘图。其结构简单,用一个有序词典进行实现。

    方法 作用
    B() 返回词典的长度
    plot(title,cumulative=False) 绘制频率分布图,若cumu为True,则是累积频率分布图
    tabulate() 生成频率分布的表格形式
    most_common() 返回出现次数最频繁的词与频度
    hapaxes() 返回只出现过一次的词

    词频统计功能实现如下:

    import nltk
    tokens=[ 'my','dog','has','flea','problems','help','please',
             'maybe','not','take','him','to','dog','park','stupid',
             'my','dalmation','is','so','cute','I','love','him'  ]
    #统计词频
    freq = nltk.FreqDist(tokens)
    
    #输出词和相应的频率
    for key,val in freq.items():
        print (str(key) + ':' + str(val))
    
    #可以把最常用的5个单词拿出来
    standard_freq=freq.most_common(5)
    print(standard_freq)
    
    #绘图函数为这些词频绘制一个图形
    freq.plot(20, cumulative=False)

    3. NLTK去除停用词(stopwords)

    from nltk.corpus import stopwords
    tokens=[ 'my','dog','has','flea','problems','help','please',
             'maybe','not','take','him','to','dog','park','stupid',
             'my','dalmation','is','so','cute','I','love','him'  ]
    
    clean_tokens=tokens[:]
    stwords=stopwords.words('english')
    for token in tokens:
        if token in stwords:
            clean_tokens.remove(token)
    
    print(clean_tokens)

     4. NLTK分句和分词(tokenize)

    (1)nltk分句

    from nltk.tokenize import sent_tokenize
    mytext = "Hello Adam, how are you? I hope everything is going well. Today is a good day, see you dude."
    print(sent_tokenize(mytext))

    结果如下: 

    ['Hello Adam, how are you?', 'I hope everything is going well.', 'Today is a good day, see you dude.']

    (2) nltk分词

    from nltk.tokenize import word_tokenize
    mytext = "Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude."
    print(word_tokenize(mytext))

     结果如下:

    ['Hello', 'Mr.', 'Adam', ',', 'how', 'are', 'you', '?', 'I', 'hope', 'everything', 'is', 'going', 'well', '.', 'Today', 'is', 'a', 'good', 'day', ',', 'see', 'you', 'dude', '.']

    (3) nltk标记非英语语言文本

    from nltk.tokenize import sent_tokenize
    mytext = "Bonjour M. Adam, comment allez-vous? J'espère que tout va bien. Aujourd'hui est un bon jour."
    print(sent_tokenize(mytext,"french"))

    结果如下: 

    ['Bonjour M. Adam, comment allez-vous?', "J'espère que tout va bien.", "Aujourd'hui est un bon jour."]

    5. NLTK词干提取 (Stemming)

    单词词干提取就是从单词中去除词缀并返回词根。(比方说 working 的词干是 work。)搜索引擎在索引页面的时候使用这种技术,所以很多人通过同一个单词的不同形式进行搜索,返回的都是相同的,有关这个词干的页面。

    词干提取的算法有很多,但最常用的算法是 Porter 提取算法。NLTK 有一个 PorterStemmer 类,使用的就是 Porter 提取算法。

    (1) PorterStemmer

    from nltk.stem import PorterStemmer
    porter_stemmer = PorterStemmer()
    print(porter_stemmer.stem('working'))
    #结果为:work 

    (2)LancasterStemmer

    from nltk.stem import LancasterStemmer
    lancaster_stemmer = LancasterStemmer()
    print(lancaster_stemmer.stem('working'))
    #结果为:work 

    (3)SnowballStemmer 提取非英语单词词干

    SnowballStemmer 类,除了英语外,还可以适用于其他 13 种语言。支持的语言如下:

    from nltk.stem import SnowballStemmer
    print(SnowballStemmer.languages)
    #结果为:
    ('danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish')

    使用 SnowballStemmer 类的 stem() 函数来提取非英语单词

    from nltk.stem import SnowballStemmer
    french_stemmer = SnowballStemmer('french')
    print(french_stemmer.stem("French word"))
    #结果为:french word

    6. NLTK词形还原(Lemmatization)  

    (1)词形还原与词干提取类似, 但不同之处在于词干提取经常可能创造出不存在的词汇,词形还原的结果是一个真正的词汇。

    from nltk.stem import WordNetLemmatizer
    lemmatizer = WordNetLemmatizer()
    print(lemmatizer.lemmatize('increases'))
    
    #结果为:increase

    (2) 结果可能是同义词或具有相同含义的不同词语。有时,如果你试图还原一个词,比如 playing,还原的结果还是 playing。这是因为默认还原的结果是名词,如果你想得到动词,可以通过以下的方式指定。

    from nltk.stem import WordNetLemmatizer
    lemmatizer = WordNetLemmatizer()
    print(lemmatizer.lemmatize('playing', pos="v"))
    
    #结果为:play

    (3)实际上,这是一个非常好的文本压缩水平。最终压缩到原文本的 50% 到 60% 左右。结果可能是动词名词形容词副词

    from nltk.stem import WordNetLemmatizer
    lemmatizer = WordNetLemmatizer()
    print(lemmatizer.lemmatize('playing', pos="v"))
    print(lemmatizer.lemmatize('playing', pos="n"))
    print(lemmatizer.lemmatize('playing', pos="a"))
    print(lemmatizer.lemmatize('playing', pos="r"))
    '''
    结果为:
    play
    playing
    playing
    playing
    '''

    7. NLTK词性标注(POS Tag)

    (1)词性标注是把一个句子中的单词标注为名词,形容词,动词等。

    import nltk
    text=nltk.word_tokenize('what does the fox say')
    print(text)
    print(nltk.pos_tag(text))
    
    '''
    结果为:
    ['what', 'does', 'the', 'fox', 'say']
    
    输出是元组列表,元组中的第一个元素是单词,第二个元素是词性标签
    [('what', 'WDT'), ('does', 'VBZ'), ('the', 'DT'), ('fox', 'NNS'), ('say', 'VBP')]
    '''

    (2)简化的词性标记集列表(Part of Speech)

    标记(Tag) 含义(Meaning) 例子(Examples)
    ADJ 形容词(adjective) new,good,high,special,big
    ADV 副词(adverb) really,,already,still,early,now
    CNJ 连词(conjunction) and,or,but,if,while
    DET 限定词(determiner) the,a,some,most,every
    EX 存在量词(existential) there,there's
    FW 外来词(foreign word) dolce,ersatz,esprit,quo,maitre
    MOD 情态动词(modal verb) will,can,would,may,must
    N 名词(noun) year,home,costs,time
    NP 专有名词(proper noun) Alison,Africa,April,Washington
    NUM 数词(number) twenty-four,fourth,1991,14:24
    PRO 代词(pronoun) he,their,her,its,my,I,us
    P 介词(preposition) on,of,at,with,by,into,under
    TO 词 to(the word to) to
    UH 感叹词(interjection) ah,bang,ha,whee,hmpf,oops
    V 动词(verb) is,has,get,do,make,see,run
    VD 过去式(past tense) said,took,told,made,asked
    VG 现在分词(present participle) making,going,playing,working
    VN 过去分词(past participle) given,taken,begun,sung
    WH wh限定词(wh determiner) who,which,when,what,where

    NLTK词性标注编码含义

    8. NLTK中的wordnet

    wordnet 是为自然语言处理构建的数据库。它包括部分词语的一个同义词组和一个简短的定义。

    (1)通过 wordnet可以得到给定词的定义和例句

    from nltk.corpus import wordnet
    syn = wordnet.synsets("pain")  #获取“pain”的同义词集
    print(syn[0].definition())
    print(syn[0].examples())
    
    '''
    结果为:
    a symptom of some physical hurt or disorder
    ['the patient developed severe pain and distension']
    '''

    (2)使用 wordnet来获得同义词

    from nltk.corpus import wordnet
    synonyms = []
    for syn in wordnet.synsets('Computer'):
        for lemma in syn.lemmas():
            synonyms.append(lemma.name())
    print(synonyms)
    
    '''
    结果为:
    ['computer', 'computing_machine', 'computing_device', 'data_processor', 'electronic_computer', 'information_processing_system', 'calculator', 'reckoner', 'figurer', 'estimator', 'computer']
    '''

    (3)使用wordnet来获取反义词

    from nltk.corpus import wordnet
    antonyms = []
    for syn in wordnet.synsets("small"):
        for l in syn.lemmas():
            if l.antonyms():   #判断是否是正确的反义词
                antonyms.append(l.antonyms()[0].name())
    print(antonyms)
    
    '''
    结果为:
    ['large', 'big', 'big']
    '''

    交流学习资料共享欢迎入QQ群:955817470

    展开全文
  • NLTK学习之一:简单文本分析

    万次阅读 多人点赞 2017-08-13 21:09:07
    nltk的全称是natural language toolkit,是一套基于python的自然语言处理工具集。1 NLTK的安装nltk的安装十分便捷,只需要pip就可以。pip install nltknltk中集成了语料与模型等的包管理器,通过在python解释器中...

    nltk的全称是natural language toolkit,是一套基于python的自然语言处理工具集。

    1 NLTK的安装

    nltk的安装十分便捷,只需要pip就可以。

    pip install nltk

    在nltk中集成了语料与模型等的包管理器,通过在python解释器中执行

    >>> import nltk
    >>> nltk.download()

    便会弹出下面的包管理界面,在管理器中可以下载语料,预训练的模型等。
    nltk_download

    2 对文本进行简单的分析

    2.1 Text类介绍

    nltk.text.Text()类用于对文本进行初级的统计与分析,它接受一个词的列表作为参数。Text类提供了下列方法。

    方法 作用
    Text(words) 对象构造
    concordance(word, width=79, lines=25) 显示word出现的上下文
    common_contexts(words) 显示words出现的相同模式
    similar(word) 显示word的相似词
    collocations(num=20, window_size=2) 显示最常见的二词搭配
    count(word) word出现的词数
    dispersion_plot(words) 绘制words中文档中出现的位置图
    vocab() 返回文章去重的词典

    nltk.text.TextCollection类是Text的集合,提供下列方法

    方法 作用
    nltk.text.TextCollection([text1,text2,]) 对象构造
    idf(term) 计算词term在语料库中的逆文档频率,即logterm
    tf(term,text) 统计term在text中的词频
    tf_idf(term,text) 计算term在句子中的tf_idf,即tf*idf

    2.2 示例

    下面我们对青春爱情小说《被遗忘的时光》做下简单的分析。首先加载文本:

    import ntlk
    import jieba
    
    raw=open('forgotten_times.txt').read()
    text=nltk.text.Text(jieba.lcut(raw))

    对于言情小说,先看下风花雪月这样的词出现的情况

    print text.concordance(u'风花雪月')

    输出如下:

    >>> Displaying 2 of 2 matches:
    彼时 校园 民谣 不复 大热 了 , 但 处身 校园 , 喜欢 吟唱 风花雪月 的 感性 青年 还是 喜欢 借此 抒怀 。 邵伊敏 平常 听 英语歌 较
    的 眼睛 看 的 是 自己 , 迷恋 的 却 多半 只是 少女 心中 的 风花雪月 , 而 迷恋 过后 不可避免 不是 失望 就是 幻灭 。 他 将 目光

    再看下作者对于某些同义词的使用习惯

    print text.common_contexts([u'一起',u'一同'])

    输出如下:

    >>> 爷爷奶奶_生活 在_时

    下面看下文章常用的二词搭配

    text.collocations()

    输出

    出入境 管理处; 沃尔沃 XC90; 慢吞吞 爬起来; 没交过 男朋友; 邵伊敏 回头一看; 戴维凡 哭笑不得; 没想到 邵伊敏; 邵伊敏 第二天; 邵伊敏 没想到

    查看关心的词在文中出现的位置

    text.dispersion_plot([u'校园',u'大学'])

    输出如下图:
    nltk_disp_plot

    3 对文档用词进行分布统计

    3.1 FreqDist类介绍

    这个类主要记录了每个词出现的次数,根据统计数据生成表格,或绘图。其结构很简单,用一个有序词典进行实现。所以dict类型的方法在此类也是适用的。如keys()等。

    方法 作用
    B() 返回词典的长度
    plot(title,cumulative=False) 绘制频率分布图,若cumu为True,则是累积频率分布图
    tabulate() 生成频率分布的表格形式
    most_common() 返回出现次数最频繁的词与频度
    hapaxes() 返回只出现过一次的词

    3.2 示例

    对歌曲《The day you went away》的歌词进行分析。

    text = open('corpus/the_day_you_went_away.txt').read()
    fdist = nltk.FreqDist(nltk.word_tokenize(text))
    fdist.plot(30,cumulative=True)

    代码第二行调用了word_tokenize()函数,此函数的作用是基于空格/标点等对文本进行分词,返回分词后的列表。如果要处理中文,需要三方的分词器先处理,之后才能使用nltk进行处理。运行输出分布图如下:
    nltk_word_dist

    4 nltk自带的语料库

    在nltk.corpus包下,提供了几类标注好的语料库。见下表:

    语料库 说明
    gutenberg 一个有若干万部的小说语料库,多是古典作品
    webtext 收集的网络广告等内容
    nps_chat 有上万条聊天消息语料库,即时聊天消息为主
    brown 一个百万词级的英语语料库,按文体进行分类
    reuters 路透社语料库,上万篇新闻方档,约有1百万字,分90个主题,并分为训练集和测试集两组
    inaugural 演讲语料库,几十个文本,都是总统演说

    更多语料库,可以用nltk.download()在下载管理器中查看corpus。

    4.1语料库处理

    方法明 说明
    fileids() 返回语料库中文件名列表
    fileids[categories] 返回指定类别的文件名列表
    raw(fid=[c1,c2]) 返回指定文件名的文本字符串
    raw(catergories=[]) 返回指定分类的原始文本
    sents(fid=[c1,c2]) 返回指定文件名的语句列表
    sents(catergories=[c1,c2]) 按分类返回语句列表
    words(filename) 返回指定文件名的单词列表
    words(catogories=[]) 返回指定分类的单词列表

    5 文本预处理

    NLP在获取语料之后,通常要进行文本预处理。英文的预处理包括:分词,去停词,提取词干等步骤。中文的分词相对于英文更复杂一些,也需要去停词。但没有提取词干的需要。
    对于英文去停词的支持,在corpus下包含了一个stopword的停词库。
    对于提取词词干,提供了Porter和Lancaster两个stemer。另个还提供了一个WordNetLemmatizer做词形归并。Stem通常基于语法规则使用正则表达式来实现,处理的范围广,但过于死板。而Lemmatizer实现采用基于词典的方式来解决,因而更慢一些,处理的范围和词典的大小有关。

    porter = nltk.PorterStemmer()
    porter.stem('lying') #'lie'
    
    lema=nltk.WordNetLemmatizer()
    lema.lemmatize('women')   #'woman'
    展开全文
  • Python NLTK 自然语言处理入门与例程

    万次阅读 多人点赞 2018-02-26 09:59:58
    Python NLTK 自然语言处理入门与例程在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP)。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的,用于自然语言处理的 Python 库。那么 NLP 到底是什么?学习...

    Python NLTK 自然语言处理入门与例程

    • 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP)。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的,用于自然语言处理的 Python 库。

    那么 NLP 到底是什么?学习 NLP 能带来什么好处?

    简单的说,自然语言处理( NLP )就是开发能够理解人类语言的应用程序和服务。

    我们生活中经常会接触的自然语言处理的应用,包括语音识别,语音翻译,理解句意,理解特定词语的同义词,以及写出语法正确,句意通畅的句子和段落。

    NLP的作用

    正如大家所知,每天博客,社交网站和网页会产生数亿字节的海量数据。

    有很多公司热衷收集所有这些数据,以便更好地了解他们的用户和用户对产品的热情,并对他们的产品或者服务进行合适的调整。

    这些海量数据可以揭示很多现象,打个比方说,巴西人对产品 A 感到满意,而美国人却对产品 B 更感兴趣。通过NLP,这类的信息可以即时获得(即实时结果)。例如,搜索引擎正是一种 NLP,可以在正确的时间给合适的人提供适当的结果。

    但是搜索引擎并不是自然语言处理(NLP)的唯一应用。还有更好更加精彩的应用。

    NLP的应用

    以下都是自然语言处理(NLP)的一些成功应用:

    • 搜索引擎,比如谷歌,雅虎等等。谷歌等搜索引擎会通过NLP了解到你是一个科技发烧友,所以它会返回科技相关的结果。
    • 社交网站信息流,比如 Facebook 的信息流。新闻馈送算法通过自然语言处理了解到你的兴趣,并向你展示相关的广告以及消息,而不是一些无关的信息。
    • 语音助手,诸如苹果 Siri。
    • 垃圾邮件程序,比如 Google 的垃圾邮件过滤程序 ,这不仅仅是通常会用到的普通的垃圾邮件过滤,现在,垃圾邮件过滤器会对电子邮件的内容进行分析,看看该邮件是否是垃圾邮件。

    NLP库

    现在有许多开源的自然语言处理(NLP)库。比如:

    • Natural language toolkit (NLTK)
    • Apache OpenNLP
    • Stanford NLP suite
    • Gate NLP library

    自然语言工具包(NLTK)是最受欢迎的自然语言处理(NLP)库。它是用 Python 语言编写的,背后有强大的社区支持。

    NLTK 也很容易入门,实际上,它将是你用到的最简单的自然语言处理(NLP)库。

    在这个 NLP 教程中,我们将使用 Python NLTK 库。在开始安装 NLTK 之前,我假设你知道一些 Python入门知识

    安装 NLTK

    如果你使用的是 Windows , Linux 或 Mac,你可以 使用PIP 安装NLTK: # pip install nltk。

    在本文撰写之时,你可以在 Python 2.7 , 3.4 和 3.5 上都可以使用NLTK。或者可以通过获取tar 进行源码安装

    要检查 NLTK 是否正确地安装完成,可以打开你的Python终端并输入以下内容:Import nltk。如果一切顺利,这意味着你已经成功安装了 NLTK 库。

    一旦你安装了 NLTK,你可以运行下面的代码来安装 NLTK 包:

    import nltk
    nltk.download()

    这将打开 NLTK 下载器来选择需要安装的软件包。

    你可以选择安装所有的软件包,因为它们的容量不大,所以没有什么问题。现在,我们开始学习吧!

    使用原生 Python 来对文本进行分词

    首先,我们将抓取一些网页内容。然后来分析网页文本,看看爬下来的网页的主题是关于什么。我们将使用 urllib模块来抓取网页:

    import urllib.request
    response = urllib.request.urlopen('http://php.net/')
    html = response.read()
    print (html)

    从打印输出中可以看到,结果中包含许多需要清理的HTML标记。我们可以用这个 BeautifulSoup 库来对抓取的文本进行处理:

    from bs4 import BeautifulSoup
    import urllib.request 
    response = urllib.request.urlopen('http://php.net/') 
    html = response.read()
    soup = BeautifulSoup(html,"html5lib")
    text = soup.get_text(strip=True)
    print (text)

    现在,我们能将抓取的网页转换为干净的文本。这很棒,不是么?

    最后,让我们通过以下方法将文本分词:

    from bs4 import BeautifulSoup 
    import urllib.request 
    response = urllib.request.urlopen('http://php.net/') 
    html = response.read() 
    soup = BeautifulSoup(html,"html5lib") 
    text = soup.get_text(strip=True) 
    tokens = [t for t in text.split()] 
    print (tokens)

    词频统计

    现在的文本相比之前的 html 文本好多了。我们再使用 Python NLTK 来计算每个词的出现频率。NLTK 中的FreqDist( ) 函数可以实现词频统计的功能 :

    from bs4 import BeautifulSoup
    import urllib.request
    import nltk 
    response = urllib.request.urlopen('http://php.net/') 
    html = response.read() 
    soup = BeautifulSoup(html,"html5lib") 
    text = soup.get_text(strip=True) 
    tokens = [t for t in text.split()] 
    freq = nltk.FreqDist(tokens) 
    for key,val in freq.items(): 
        print (str(key) + ':' + str(val))

    如果你查看输出结果,会发现最常用的词语是PHP。

    你可以用绘图函数为这些词频绘制一个图形: freq.plot(20, cumulative=False)。

    从图中,你可以肯定这篇文章正在谈论 PHP。这很棒!有一些词,如"the," "of," "a," "an," 等等。这些词是停止词。一般来说,停止词语应该被删除,以防止它们影响我们的结果。

    使用 NLTK 删除停止词

    NLTK 具有大多数语言的停止词表。要获得英文停止词,你可以使用以下代码:

    from nltk.corpus import stopwords
    stopwords.words('english')

    现在,让我们修改我们的代码,并在绘制图形之前清理标记。首先,我们复制一个列表。然后,我们通过对列表中的标记进行遍历并删除其中的停止词:

    clean_tokens = tokens[:] 
    sr = stopwords.words('english')
    for token in tokens:
        if token in stopwords.words('english'):
            clean_tokens.remove(token)

    你可以在这里查看Python List 函数, 了解如何处理列表。

    最终的代码应该是这样的:

    from bs4 import BeautifulSoup 
    import urllib.request 
    import nltk 
    from nltk.corpus import stopwords 
    response = urllib.request.urlopen('http://php.net/') 
    html = response.read() 
    soup = BeautifulSoup(html,"html5lib") 
    text = soup.get_text(strip=True) 
    tokens = [t for t in text.split()] 
    clean_tokens = tokens[:] 
    sr = stopwords.words('english') 
    for token in tokens: 
        if token in stopwords.words('english'): 
            clean_tokens.remove(token) 
    freq = nltk.FreqDist(clean_tokens) 
    for key,val in freq.items(): 
        print (str(key) + ':' + str(val))

    如果你现在检查图表,会感觉比之前那张图标更加清晰,因为没有了停止词的干扰。

    freq.plot(20,cumulative=False)

    使用 NLTK 对文本分词

    我们刚刚了解了如何使用 split( ) 函数将文本分割为标记 。现在,我们将看到如何使用 NLTK 对文本进行标记化。对文本进行标记化是很重要的,因为文本无法在没有进行标记化的情况下被处理。标记化意味着将较大的部分分隔成更小的单元。

    你可以将段落分割为句子,并根据你的需要将句子分割为单词。NLTK 具有内置的句子标记器和词语标记器。

    假设我们有如下的示例文本:

    Hello Adam, how are you? I hope everything is going well.  Today is a good day, see you dude.

    为了将这个文本标记化为句子,我们可以使用句子标记器:

    from nltk.tokenize import sent_tokenize 
    mytext = "Hello Adam, how are you? I hope everything is going well. Today is a good day, see you dude." 
    print(sent_tokenize(mytext))

    输出如下:

    ['Hello Adam, how are you?', 'I hope everything is going well.', 'Today is a good day, see you dude.']

    你可能会说,这是一件容易的事情。我不需要使用 NLTK 标记器,并且我可以使用正则表达式来分割句子,因为每个句子前后都有标点符号或者空格。

    那么,看看下面的文字:

    Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude.

    呃!Mr. 是一个词,虽然带有一个符号。让我们来试试使用 NLTK 进行分词:

    from nltk.tokenize import sent_tokenize 
    mytext = "Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude." 
    print(sent_tokenize(mytext))

    输出如下所示:

    ['Hello Mr. Adam, how are you?', 'I hope everything is going well.', 'Today is a good day, see you dude.']

    Great!结果棒极了。然后我们尝试使用词语标记器来看看它是如何工作的:

    from nltk.tokenize import word_tokenize
    mytext = "Hello Mr. Adam, how are you? I hope everything is going well. Today is a good day, see you dude."
    print(word_tokenize(mytext))

    输出如下:

    ['Hello', 'Mr.', 'Adam', ',', 'how', 'are', 'you', '?', 'I', 'hope', 'everything', 'is', 'going', 'well', '.', 'Today', 'is', 'a', 'good', 'day', ',', 'see', 'you', 'dude', '.']

    正如所料,Mr. 是一个词,也确实被 NLTK 当做一个词。NLTK使用 nltk.tokenize.punkt module 中的 PunktSentenceTokenizer 进行文本分词。这个标记器经过了良好的训练,可以对多种语言进行分词 。

    标记非英语语言文本

    为了标记其他语言,可以像这样指定语言:

    from nltk.tokenize import sent_tokenize
    mytext = "Bonjour M. Adam, comment allez-vous? J'espère que tout va bien. Aujourd'hui est un bon jour."
    print(sent_tokenize(mytext,"french"))

    结果将是这样的:

    ['Bonjour M. Adam, comment allez-vous?', "J'espère que tout va bien.", "Aujourd'hui est un bon jour."]

    NLTk 对其他非英语语言的支持也非常好!

    从 WordNet 获取同义词

    如果你还记得我们使用 nltk.download( ) 安装 NLTK 的扩展包时。其中一个扩展包名为 WordNet。WordNet 是为自然语言处理构建的数据库。它包括部分词语的一个同义词组和一个简短的定义。

    通过 NLTK 你可以得到给定词的定义和例句:

    from nltk.corpus import wordnet
    syn = wordnet.synsets("pain")
    print(syn[0].definition())
    print(syn[0].examples())

    结果是:

    a symptom of some physical hurt or disorder
    ['the patient developed severe pain and distension']

    WordNet 包含了很多词的定义:

    from nltk.corpus import wordnet
    syn = wordnet.synsets("NLP")
    print(syn[0].definition())
    syn = wordnet.synsets("Python")
    print(syn[0].definition())

    结果是:

    the branch of information science that deals with natural language information
    large Old World boas

    您可以使用 WordNet 来获得同义词:

    from nltk.corpus import wordnet 
    synonyms = []
    for syn in wordnet.synsets('Computer'):
        for lemma in syn.lemmas():
            synonyms.append(lemma.name())
    print(synonyms)

    输出是:

    ['computer', 'computing_machine', 'computing_device', 'data_processor', 'electronic_computer', 'information_processing_system', 'calculator', 'reckoner', 'figurer', 'estimator', 'computer']

    Cool!

    从 WordNet 获取反义词

    你可以用同样的方法得到单词的反义词。你唯一要做的是在将 lemmas 的结果加入数组之前,检查结果是否确实是一个正确的反义词。

    from nltk.corpus import wordnet
    antonyms = []
    for syn in wordnet.synsets("small"):
        for l in syn.lemmas():
            if l.antonyms():
                antonyms.append(l.antonyms()[0].name())
    print(antonyms)

    输出是:

    ['large', 'big', 'big']

    这就是 NLTK 在自然语言处理中的力量。

    NLTK词干提取

    单词词干提取就是从单词中去除词缀并返回词根。(比方说 working 的词干是 work。)搜索引擎在索引页面的时候使用这种技术,所以很多人通过同一个单词的不同形式进行搜索,返回的都是相同的,有关这个词干的页面。

    词干提取的算法有很多,但最常用的算法是 Porter 提取算法。NLTK 有一个 PorterStemmer 类,使用的就是 Porter 提取算法。

    from nltk.stem import PorterStemmer
    stemmer = PorterStemmer() 
    print(stemmer.stem('working'))

    结果是: work

    结果很清楚。

    还有其他一些提取算法,如 Lancaster 提取算法。这个算法的输出同 Porter 算法的结果在几个单词上不同。你可以尝试他们两个算法来查看有哪些不同结果。

    提取非英语单词词干

    SnowballStemmer 类,除了英语外,还可以适用于其他 13 种语言。支持的语言如下:

    from nltk.stem import SnowballStemmer
    print(SnowballStemmer.languages)
    'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish'

    你可以使用 SnowballStemmer 类的 stem( )函数来提取非英语单词,如下所示:

    from nltk.stem import SnowballStemmer
    french_stemmer = SnowballStemmer('french')
    print(french_stemmer.stem("French word"))

    来自法国的朋友欢迎在评论区 poll 出你们测试的结果!

    使用 WordNet 引入词汇

    词汇的词汇化与提取词干类似,但不同之处在于词汇化的结果是一个真正的词汇。与词干提取不同,当你试图提取一些词干时,有可能会导致这样的情况:

    from nltk.stem import PorterStemmer 
    stemmer = PorterStemmer() 
    print(stemmer.stem('increases'))

    结果是:increas。

    现在,如果我们试图用NLTK WordNet来还原同一个词,结果会是正确的:

    from nltk.stem import WordNetLemmatizer
    lemmatizer = WordNetLemmatizer()
    print(lemmatizer.lemmatize('increases'))

    结果是 increase。

    结果可能是同义词或具有相同含义的不同词语。有时,如果你试图还原一个词,比如 playing,还原的结果还是 playing。这是因为默认还原的结果是名词,如果你想得到动词,可以通过以下的方式指定。

    from nltk.stem import WordNetLemmatizer
    lemmatizer = WordNetLemmatizer()
    print(lemmatizer.lemmatize('playing', pos="v"))

    结果是: play。

    实际上,这是一个非常好的文本压缩水平。最终压缩到原文本的 50% 到 60% 左右。结果可能是动词,名词,形容词或副词:

    from nltk.stem import WordNetLemmatizer 
    lemmatizer = WordNetLemmatizer() 
    print(lemmatizer.lemmatize('playing', pos="v")) 
    print(lemmatizer.lemmatize('playing', pos="n")) 
    print(lemmatizer.lemmatize('playing', pos="a")) 
    print(lemmatizer.lemmatize('playing', pos="r"))

    结果是:

    play 
    playing 
    playing 
    playing

    词干化和词化差异

    好吧,让我们分别尝试一些单词的词干提取和词形还原:

    from nltk.stem import WordNetLemmatizer 
    from nltk.stem import PorterStemmer 
    stemmer = PorterStemmer() 
    lemmatizer = WordNetLemmatizer() 
    print(stemmer.stem('stones')) 
    print(stemmer.stem('speaking')) 
    print(stemmer.stem('bedroom')) 
    print(stemmer.stem('jokes')) 
    print(stemmer.stem('lisa')) 
    print(stemmer.stem('purple')) 
    print('----------------------') 
    print(lemmatizer.lemmatize('stones')) 
    print(lemmatizer.lemmatize('speaking'))
    print(lemmatizer.lemmatize('bedroom'))
    print(lemmatizer.lemmatize('jokes'))
    print(lemmatizer.lemmatize('lisa'))
    print(lemmatizer.lemmatize('purple'))

    结果是:

    stone 
    speak 
    bedroom 
    joke 
    lisa 
    purpl 
    ---------------------- 
    stone 
    speaking 
    bedroom
    joke
    lisa
    purple

    词干提取的方法可以在不知道语境的情况下对词汇使用,这就是为什么它相较词形还原方法速度更快但准确率更低。

    在我看来,词形还原比提取词干的方法更好。词形还原,如果实在无法返回这个词的变形,也会返回另一个真正的单词;这个单词可能是一个同义词,但不管怎样这是一个真正的单词。当有时候,你不关心准确度,需要的只是速度。在这种情况下,词干提取的方法更好。

    我们在本 NLP 教程中讨论的所有步骤都涉及到文本预处理。在以后的文章中,我们将讨论使用Python NLTK进行文本分析。

    展开全文
  • NLP工具——NLTK 安装及使用

    千次阅读 2019-08-09 13:42:50
    文章目录1、介绍2、安装3.1 安装NLTK3.2 安装NLTK Data交互式安装通过命令行安装手动安装3、Demo4、使用4.1 搜索文本(Searching Text)4.2 统计词频4.3 WordNet 1、介绍 【官网】Natural Language Toolkit — NLTK ...

    1、介绍

    【官网】Natural Language Toolkit — NLTK 3.4.4 documentation
    【github】NLTK Source

    NLTK最初成立于2001年,是宾夕法尼亚大学计算机与信息科学系计算语言学课程的一部分。从那时起,它已经在数十个贡献者的帮助下得到了发展和扩展。它现已在数十所大学的课程中采用,并作为许多研究项目的基础。

    NLTK(Natural Language Toolkit)是构建Python程序以使用人类语言数据的领先平台。它为50多种语料库和词汇资源(如WordNet)提供了易于使用的界面,还提供了一套用于分类,标记化,词干化,标记,解析和语义推理的文本处理库,用于工业级NLP库的包装器。

    NLTK适用于语言学家,工程师,学生,教育工作者,研究人员和行业用户等。NLTK适用于Windows,Mac OS X和Linux。最重要的是,NLTK是一个免费的,开源的,社区驱动的项目。

    NLTK被称为“使用Python进行教学和计算语言学工作的绝佳工具”,以及“用自然语言进行游戏的神奇图书馆”。

    语言处理任务和相应的NLTK模块以及功能示例:

    语言处理任务 NLTK 模块 功能
    Accessing corpora corpus standardized interfaces to corpora and lexicons
    String processing tokenize, stem tokenizers, sentence tokenizers, stemmers
    Collocation discovery collocations t-test, chi-squared, point-wise mutual information
    Part-of-speech tagging tag n-gram, backoff, Brill, HMM, TnT
    Machine learning classify, cluster, tbl decision tree, maximum entropy, naive Bayes, EM, k-means
    Chunking chunk regular expression, n-gram, named-entity
    Parsing parse, ccg chart, feature-based, unification, probabilistic, dependency
    Semantic interpretation sem, inference lambda calculus, first-order logic, model checking
    Evaluation metrics metrics precision, recall, agreement coefficients
    Probability and estimation probability frequency distributions, smoothed probability distributions
    Applications app, chat graphical concordancer, parsers, WordNet browser, chatbots
    Linguistic fieldwork toolbox manipulate data in SIL Toolbox format

    NLTK设计目标:

    • 简单性
    • 一致性
    • 可扩展性
    • 模块化

    2、安装

    NLTK支持Python 2.7, 3.5, 3.6, 3.7,对于windows用户强烈推荐Python3版本。

    对于Unix系统

    2.1 安装NLTK

    pip install --user -U nltk
    

    测试是否安装:

    import nltk
    

    2.2 安装NLTK Data

    安装NLTK软件包后,请安装必要的数据集/模型以使特定功能正常工作。

    如果您不确定需要哪些数据集/模型,可以在命令行类型python -m nltk.downloader上安装“popular”的NLTK数据子集,或者在Python解释器里通过如下命令安装

    import nltk
    nltk.download(“popular”)
    

    NLTK附带了许多语料库,玩具语法,训练模型等。完整列表发布在:nltk_data
    除了单独的数据包,您可以下载整个集合(使用“all”),或者只下载书中示例和练习所需的数据(使用“book”),或者只下载语料库,无需语法或训练模型(使用“all-corpora”)。

    交互式安装

    使用如下代码:

    >>> import nltk
    >>> nltk.download()
    

    会打开一个新窗口,显示NLTK Downloader。单击“文件”菜单,然后选择“更改下载目录”。对于集中安装,请将其设置为C:\ nltk_data(Windows),/ usr / local / share / nltk_data(Mac)或/ usr / share / nltk_data(Unix)。接下来,选择要下载的包或集合。

    如果未将数据安装到上述中心位置之一,则需要设置NLTK_DATA环境变量以指定数据的位置。(在Windows计算机上,右键单击“我的电脑”,然后选择“属性”>“高级”>“环境变量”>“用户变量”>“新建…”)
    在这里插入图片描述
    通过代理Web服务器安装
    如果您的Web连接使用代理服务器,则应指定代理地址,如下所示。如果是身份验证代理,请指定用户名和密码。如果代理设置为None,则此函数将尝试检测系统代理。

    >>> nltk.set_proxy('http://proxy.example.com:3128', ('USERNAME', 'PASSWORD'))
    >>> nltk.download()
    

    通过命令行安装

    下载程序将搜索现有的nltk_data目录以安装NLTK数据。如果不存在,它将尝试在中心位置(使用管理员帐户时)或在用户的文件空间中创建一个。如有必要,请从管理员帐户或使用sudo运行下载命令。推荐的系统位置是C:\nltk_data(Windows);/usr/local/share/nltk_data(Mac);和/usr/share/nltk_data(Unix)。您可以使用-d标志指定其他位置(但如果执行此操作,请确保相应地设置NLTK_DATA环境变量)。

    安装命令行:

    python -m nltk.downloader all
    

    central installation

    sudo python -m nltk.downloader -d /usr/local/share/nltk_data all.
    

    手动安装

    创建一个文件夹nltk_data,比如 C:\nltk_data, 或者/usr/local/share/nltk_data, 以及子文件夹chunkers, grammars, misc, sentiment, taggers, corpora, help, models, stemmers, tokenizers.

    nltk_data下载对应的包,解压至对应文件夹。

    NLTK_DATA环境变量设置为指向顶级nltk_data文件夹。

    3、Demo

    分词、词性标注

    >>> import nltk
    >>> sentence = """At eight o'clock on Thursday morning
    ... Arthur didn't feel very good."""
    >>> tokens = nltk.word_tokenize(sentence)
    >>> tokens
    ['At', 'eight', "o'clock", 'on', 'Thursday', 'morning',
    'Arthur', 'did', "n't", 'feel', 'very', 'good', '.']
    >>> tagged = nltk.pos_tag(tokens)
    >>> tagged[0:6]
    [('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'), ('on', 'IN'),
    ('Thursday', 'NNP'), ('morning', 'NN')]
    

    命名识别识别

    >>> entities = nltk.chunk.ne_chunk(tagged)
    >>> entities
    Tree('S', [('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'),
               ('on', 'IN'), ('Thursday', 'NNP'), ('morning', 'NN'),
           Tree('PERSON', [('Arthur', 'NNP')]),
               ('did', 'VBD'), ("n't", 'RB'), ('feel', 'VB'),
               ('very', 'RB'), ('good', 'JJ'), ('.', '.')])
    

    显示分析树

    >>> from nltk.corpus import treebank
    >>> t = treebank.parsed_sents('wsj_0001.mrg')[0]
    >>> t.draw()
    

    在这里插入图片描述

    4、使用

    具体使用可参考: NLTK Book

    4.1 搜索文本(Searching Text)

    使用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
    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
    
    # 搜索'moustrous'
    text1.concordance('moustrous')
    

    第一次对特定文本使用concordance时,构建索引需要几秒钟,以便后续搜索速度很快。

    相似文本

    使用similar查找相似词语

    >>> text1.similar("monstrous")
    mean part maddens doleful gamesome subtly uncommon careful untoward
    exasperate loving passing mouldy christian few true mystifying
    imperial modifies contemptible
    >>> text2.similar("monstrous")
    very heartily so exceedingly remarkably as vast a great amazingly
    extremely good sweet
    

    common_contexts只查找两个或多于两个单词共享的上下文,使用方括号括起来

    >>> text2.common_contexts(["monstrous", "very"])
    a_pretty is_pretty am_glad be_glad a_lucky
    

    通过色散图显示特定单词在文本中出现的位置信息

    我们还可以确定文本中单词的位置:从一开始就显示多少个单词。可以使用色散图显示该位置信息。每个条带代表一个单词的实例,每行代表整个文本。

    >>> text4.dispersion_plot(["citizens", "democracy", "freedom", "duties", "America"])
    

    4.2 统计词频

    获取文本长度

    >>>len(text3)
    >44764
    

    上述结果指的是文本中所有tokens的总数,包含重复字符。

    获取文本单词量

    >>> sorted(set(text3))
    ['!', "'", '(', ')', ',', ',)', '.', '.)', ':', ';', ';)', '?', '?)',
    'A', 'Abel', 'Abelmizraim', 'Abidah', 'Abide', 'Abimael', 'Abimelech',
    'Abr', 'Abrah', 'Abraham', 'Abram', 'Accad', 'Achbor', 'Adah', ...]
    >>> len(set(text3))
    2789
    

    特定单词的频率

    >>> text3.count("smote")
    5
    >>> 100 * text4.count('a') / len(text4)
    1.4643016433938312
    >>>
    

    将本文视为一系列单词和标点符号。

    频率分布
    统计文本中每个词汇的频率,使用FreqDist函数。most_common(num) 是表示频率最高的50个单词

    >>> fdist1 = FreqDist(text1)
    >>> print(fdist1) 
    <FreqDist with 19317 samples and 260819 outcomes>
    >>> fdist1.most_common(50)
    [(',', 18713), ('the', 13721), ('.', 6862), ('of', 6536), ('and', 6024),
    ('a', 4569), ('to', 4542), (';', 4072), ('in', 3916), ('that', 2982),
    ("'", 2684), ('-', 2552), ('his', 2459), ('it', 2209), ('I', 2124),
    ('s', 1739), ('is', 1695), ('he', 1661), ('with', 1659), ('was', 1632),
    ('as', 1620), ('"', 1478), ('all', 1462), ('for', 1414), ('this', 1280),
    ('!', 1269), ('at', 1231), ('by', 1137), ('but', 1113), ('not', 1103),
    ('--', 1070), ('him', 1058), ('from', 1052), ('be', 1030), ('on', 1005),
    ('so', 918), ('whale', 906), ('one', 889), ('you', 841), ('had', 767),
    ('have', 760), ('there', 715), ('But', 705), ('or', 697), ('were', 680),
    ('now', 646), ('which', 640), ('?', 637), ('me', 627), ('like', 624)]
    >>> fdist1['whale']
    906
    

    我们可以使用fdist1.plot(50,cumulative = True)生成这些单词的累积频率图

    Collocations和Bigrams

    提取单词对

    >>>list(bigrams(['more', 'is', 'said', 'than', 'done']))
    [('more', 'is'), ('is', 'said'), ('said', 'than'), ('than', 'done')]
    >>>
    

    根据单个词的频率找到更为频繁发生的二元词组
    使用collocations函数

    >>> text4.collocations()
    United States; fellow citizens; four years; years ago; Federal
    Government; General Government; American people; Vice President; Old
    World; Almighty God; Fellow citizens; Chief Magistrate; Chief Justice;
    God bless; every citizen; Indian tribes; public debt; one another;
    foreign nations; political parties
    >>> text8.collocations()
    would like; medium build; social drinker; quiet nights; non smoker;
    long term; age open; Would like; easy going; financially secure; fun
    times; similar interests; Age open; weekends away; poss rship; well
    presented; never married; single mum; permanent relationship; slim
    build
    >>>
    

    NTKL中频率分布函数

    Example Description
    fdist = FreqDist(samples) create a frequency distribution containing the given samples
    fdist[sample] += 1 increment the count for this sample
    fdist[‘monstrous’] count of the number of times a given sample occurred
    fdist.freq(‘monstrous’) frequency of a given sample
    fdist.N() total number of samples
    fdist.most_common(n) the n most common samples and their frequencies
    for sample in fdist: iterate over the samples
    fdist.max() sample with the greatest count
    fdist.tabulate() tabulate the frequency distribution
    fdist.plot() graphical plot of the frequency distribution
    fdist.plot(cumulative=True) cumulative plot of the frequency distribution
    fdist1 = fdist2
    fdist1 < fdist2 test if samples in fdist1 occur less frequently than in fdist2

    4.3 WordNet

    WordNet是一个面向语义的英语词典,类似于传统的词库,但结构更加丰富。NLTK包括英语WordNet,包含155,287个单词和117,659个同义词集。我们首先看一下同义词以及如何在WordNet中访问它们。

    使用wordnet.synsets()可以查看单词的含义

    >>> from nltk.corpus import wordnet as wn
    >>> wn.synsets('motorcar')
    [Synset('car.n.01')]
    

    [Synset('car.n.01')]表示motorcar只有car这一个含义,汽车的第一个名词意义。实体Synset(‘car.n.01’)被称为synset,即同义词的集合。

    查看词条名

    >>> wn.synset('car.n.01').lemma_names()
    ['car', 'auto', 'automobile', 'machine', 'motorcar']
    

    查看含义与例句
    definition()examples()

    >>> wn.synset('car.n.01').definition()
    'a motor vehicle with four wheels; usually propelled by an internal combustion engine'
    >>> wn.synset('car.n.01').examples()
    ['he needs a car to get to work']
    

    在这里插入图片描述

    获取同义词

    >>>wn.synset('car.n.01').lemma_names()
    ['car', 'auto', 'automobile', 'machine', 'motorcar']
    

    在这里插入图片描述

    展开全文
  • nltk

    2018-12-13 14:54:31
    import nltk nltk.download() 分词 英文分词:nltk.word_tokenize() # 按照单词进行分词 中文分词:jieba.cut() 词性处理 stemming词干提取: 保留最长词根 nltk库中有多种函数实现: from nltk.stem.porter ...
  • NLTK相关知识介绍

    千次阅读 2018-09-29 11:35:58
    什么事实NLTK NLTK,全称Natural Language Toolkit,自然语言处理工具包,是NLP研究领域常用的一个Python库,由宾夕法尼亚大学的Steven Bird和Edward Loper在Python的基础上开发的一个模块,至今已有超过十万行的...
  • NLP-nltk

    千次阅读 2018-06-24 17:08:52
    nltkby deamon(deamoncao@163.com) nltk的全称是natural language toolkit,...注意: 在运行命令nltk.download()安装 NLTKnltk_data 模块的时候可能会出错。此时建议离线下载安装 NLTKnltk_data 模块。数...
  • 常用工具包-nltk初步学习

    千次阅读 2016-09-26 11:47:32
    目录 一、软件安装... 1 二、相关实践理解... 1 2.1分词、词性标注... 2 2.2句法、语义分析... 2 2.3加载语料库... 2 2.4概率统计... 3 2.4.1 FreqDist. 3 2.5聚类器... ...2.6分类器
  • Python安装nltk模块

    万次阅读 2017-04-15 12:04:06
    Windows下 : ...nltk.download() 这时会自动弹出一nltk数据包下载窗口,点击download 下载 ,某些标记为 out of date的包是已经过时的,不用下载,下载的过程中有的包会下载失败,你可以切换到All Pack
  • [python]NLTK简明教程

    万次阅读 2017-09-19 21:19:18
    nltk简明教程NLTK是python环境下NLP工具包,包含了丰富的文本处理和文本挖掘API。安装安装NLTK比较简单,linux环境下只需要简单的执行sudo pip install -U nltk即可完成安装。语料下载import nltk #指定目录下载nltk...
  • NLTK是什么

    2019-04-14 17:35:47
    Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。
  • nltk安装

    2020-07-15 15:49:29
    punkt放/home/qinbo/nltk_data/tokenizers目录下
  • NLTK安装错误集合

    千次阅读 2017-03-31 15:50:33
    运行《Python自然语言处理》中的例子时出现了一系列的问题,零零散散,耗费将近一周的时间,各种问题各种出╮(╯▽╰)╭万事开头难啊~ ...nltk安装报ASCII问题 这个问题据说是因为python版本问题,好像
  • nltk安装 linux

    千次阅读 2012-04-20 09:38:19
    首先安装python;这里最好使用python2.7.3,...安装nltk将要用到的YAML: Ddownload and Installation The current stable release of PyYAML: 3.10. Download links: TAR.GZ package: http://pyyam
  • 自然语言处理工具 nltk 安装使用

    万次阅读 2017-02-17 14:39:26
    github 地址:https://github.com/nltk/nltk/ 官方地址:http://www.nltk.org/ ...安装及测试 Install NLTK: runsudopipinstall-UnltkInstall Numpy (optional): runsudopipinstall-UnumpyTest installation:
  • NLTK安装

    2019-07-08 15:44:28
    1、安装nltk、numpy pip install nltk pip install numpy 2、进入python import nltk nltk.download() 然后选择d,之后输入all开始下载nltk语料库(下载巨慢): 4、验证nltk from nltk.corpus import brown ...
  • nltk安装,语料库nltk下载

    千次阅读 多人点赞 2019-04-08 16:13:37
    安装了anaconda,已经自带安装nltk包,但是并没有安装nltk_data语料库,所以只有了算法,没有素材 nltk.download()下载连接不上或者网速太慢,用云盘下载zip到C盘: 链接:...
  • Python 2.7和NLTK安装教程

    千次阅读 2015-08-29 23:02:09
    系统:Windows 7 Ultimate 64-bits Python 2.7安装 下载Python 2.7:... NLTK安装 下载NLTK: http://pypi.python.org/packages/2.7/s/setuptools/setupt
  • Nltk安装

    2020-03-13 14:47:59
    学习自然语言处理,之前一直在学习python,那么首先安装Nltk,
  • nltk是NLP领域中一个比较通用的国际分词工具,但是使用时往往依赖语料库数据包,需要安装到本地,以下介绍在线安装和离线安装两种方式: (ps:对NLP感兴趣的朋友可以相互学习,我的微信号:Joney-Joney,请备注:...
  • 为了使用nltk除了需要下载安装nltk外还需要其扩展包。 1. 安装nltk: pip install nltk 如果出现以下问题: Resource punkt not found. Please use the NLTK Downloader to obtain the resource: >>> ...
  • 关于nltk安装出现的问题!渣渣版

    千次阅读 2019-06-03 11:07:31
    pip install nltk >>>nltk.download() 2.在查阅了csdn各种博客后,我到(https://github.com/nltk/nltk_data),官网上点击Clone or download—>Download ZIP下载了nltk的数据包 解压后,实际有用的是...
  • jieba(结巴)是一个强大的分词库,完美支持中文分词,且适用于python语言,本文对其安装做了简单的笔记。
  • 环境:python2.7.10 首先安装pip ... 然后执行python get-pip.py 将自动安装pip nltk是python的一个扩展包,提供自然语言处理工具集 ...安装nltk sudopipinstall-Unltk import nltk 然后下...
  • nltk安装

    千次阅读 2018-09-14 17:41:54
    Step 1:用pip命令安装nltk pip install nltk Step 2:运行python命令 Step 3:输入import nltk Step 4:输入nltk.download() Step 5: 会弹出一个界面,可以选择你想下载语料,预训练的模型等 ...
  • 主要为大家详细介绍了python2.7和NLTK安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • NLTK安装教程

    2015-12-02 11:10:36
    1. 安装nltksudo pip install nltk2. 安装nltk_data nltk.downloader自动下载python -m nltk.downloader all网盘链接: http://pan.baidu.com/s/1mgGozzU 密码: axx8 解压地址: (1). C:\nltk_data (Windows); ...
  • Windows下最简单安装NLTK的方法

    万次阅读 多人点赞 2017-02-05 14:28:25
    使用nltk的第一步就是先安装nltk,由于nltk是基于python的,而目前python对windows好像还不那么友好,在网上找了很多教程,但感觉很多要么就是太繁琐,要么就是对我不适用,于是决定自己鼓捣,最后装成功了,而且感觉...
  • 【Python】NLTK安装及常见问题指南

    万次阅读 多人点赞 2018-08-17 17:53:08
    NLTK库是Python中最为常用的NLP(自然语言处理)开源库,接下来介绍一下windows环境下该库的安装方法。 和其他的库一样,使用pip进行安装是最为方便的,在命令提示符中输入 pip install nltk 等读条结束即可...
  • anaconda安装NLTK详细说明

    千次阅读 2019-10-28 09:50:21
    anaconda安装NLTK详细说明: 1.打开anaconda中的spyder 2.在spyder的右下角内输入以下两条命令 import nltk nltk.download() 3.运行后会跳出一个nltk下载器窗口,点击下载即可 ...

空空如也

1 2 3 4 5 ... 20
收藏数 16,135
精华内容 6,454
关键字:

nltk