开发者社区> 问答> 正文

使用 NLTK 对文本分词

使用 NLTK 对文本分词

展开
收起
珍宝珠 2019-12-03 15:00:08 813 0
1 条回答
写回答
取消 提交回答
  • 你可以将段落分割为句子,并根据你的需要将句子分割为单词。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 进行文本分词。这个标记器经过了良好的训练,可以对多种语言进行分词 。

    2019-12-03 15:01:35
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载