将一个段落标记为句子,然后将其转换为NLTK中的单词

时间:2016-06-03 04:03:43

标签: python nltk

我正在尝试将整个段落输入到我的文字处理器中,先将其分成句子然后再分成单词。

我尝试了以下代码,但它不起作用,

    #text is the paragraph input
    sent_text = sent_tokenize(text)
    tokenized_text = word_tokenize(sent_text.split)
    tagged = nltk.pos_tag(tokenized_text)
    print(tagged)

然而这不起作用并且给我错误。那么如何将段落标记为句子然后单词呢?

示例段落:

这件事似乎压倒了这只小黑褐色的狗,让他心碎。他在孩子脚下绝望地沉了下去。当重复一击,伴随着幼稚的句子中的警告,他翻过身来,用一种特殊的方式抓住他的爪子。在他的耳朵和眼睛的同时,他向孩子祈祷。

**警告:**这只是来自互联网的随机文本,我不拥有上述内容。

3 个答案:

答案 0 :(得分:29)

您可能想要遍历sent_text

import nltk

sent_text = nltk.sent_tokenize(text) # this gives us a list of sentences
# now loop over each sentence and tokenize it separately
for sentence in sent_text:
    tokenized_text = nltk.word_tokenize(sentence)
    tagged = nltk.pos_tag(tokenized_text)
    print(tagged)

答案 1 :(得分:5)

这是一个较短的版本。这将为您提供每个单独句子的数据结构,以及句子中的每个标记。我更喜欢TweetTokenizer用于凌乱的现实世界语言。句子标记符被认为是不错的,但是在这一步之后要小心不要降低你的单词大小写,因为它可能会影响检测凌乱文本边界的准确性。

from nltk.tokenize import TweetTokenizer, sent_tokenize

tokenizer_words = TweetTokenizer()
tokens_sentences = [tokenizer_words.tokenize(t) for t in 
nltk.sent_tokenize(input_text)]
print(tokens_sentences)

这是输出的样子,我清理了所以结构突出:

[
['This', 'thing', 'seemed', 'to', 'overpower', 'and', 'astonish', 'the', 'little', 'dark-brown', 'dog', ',', 'and', 'wounded', 'him', 'to', 'the', 'heart', '.'], 
['He', 'sank', 'down', 'in', 'despair', 'at', 'the', "child's", 'feet', '.'], 
['When', 'the', 'blow', 'was', 'repeated', ',', 'together', 'with', 'an', 'admonition', 'in', 'childish', 'sentences', ',', 'he', 'turned', 'over', 'upon', 'his', 'back', ',', 'and', 'held', 'his', 'paws', 'in', 'a', 'peculiar', 'manner', '.'], 
['At', 'the', 'same', 'time', 'with', 'his', 'ears', 'and', 'his', 'eyes', 'he', 'offered', 'a', 'small', 'prayer', 'to', 'the', 'child', '.']
]

答案 2 :(得分:0)

import nltk  

textsample ="This thing seemed to overpower and astonish the little dark-brown dog, and wounded him to the heart. He sank down in despair at the child's feet. When the blow was repeated, together with an admonition in childish sentences, he turned over upon his back, and held his paws in a peculiar manner. At the same time with his ears and his eyes he offered a small prayer to the child."  

sentences = nltk.sent_tokenize(textsample)  
words = nltk.word_tokenize(textsample)  
sentences 
[w for w in words if w.isalpha()]
  

上面的最后一行将确保输出中仅单词而不是特殊字符   句子输出如下

['这东西似乎使那只黑褐色的小狗压倒了,使他震惊了。“,  “他在孩子的脚下绝望沉没。”,  “当打击再次发生时,再加上幼稚的训诫,他转过身来,用独特的方式握住了爪子。”  “与此同时,他的耳朵和眼睛为孩子提供了一个小祈祷。”

  

去掉特殊字符后的输出如下

['This',  '事情',  “似乎”,  '至',  '压倒',  '和',  '震惊',  '的'  '小',  '狗',  '和',  “受伤”,  '他',  '至',  '的'  '心',  '他',  “下沉”,  '下',  '在',  '绝望',  '在',  '的'  '儿童',  “脚”,  '什么时候',  '的'  '吹',  是,  '重复',  '一起',  与  '一个',  '训诫',  '在',  '幼稚',  '句子',  '他',  '转身',  '过度',  “在”  “他的”  '背部',  '和',  '保持',  “他的”  “爪子”,  '在',  '一种',  '特有',  '方式',  '在',  '的'  '相同',  '时间',  与  “他的”  '耳朵',  '和',  “他的”  眼睛  '他',  “提供”,  '一种',  '小',  '祷告',  '至',  '的'  '孩子']