关于python:将段落标记为句子,然后在nltk中标记为单词

Tokenize a paragraph into sentence and then into words in NLTK

我试着把整个段落输入文字处理器,先分成句子,然后再分成单词。

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

1
2
3
4
5
    #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)

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

示例段落:

这东西似乎压倒了那只小暗褐色的狗,使它吃惊,把它打伤了。他绝望地趴在孩子的脚下。当重击一次,再加上用幼稚的句子告诫他时,他转过身来,用一种特殊的方式握住他的爪子。同时,他用耳朵和眼睛向孩子祈祷。

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


您可能打算循环访问sent_text

1
2
3
4
5
6
7
8
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)


这里有一个较短的版本。这将为您提供一个数据结构,其中包含每个单独的句子和句子中的每个标记。我更喜欢tweettokenizer的混乱,真实世界的语言。句子标记器被认为是体面的,但小心不要降低你的单词大小写,直到这一步之后,因为它可能影响检测混乱文本边界的准确性。

1
2
3
4
5
6
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)

下面是输出的外观,我将其清理干净,使结构突出:

1
2
3
4
5
6
[
['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', '.']
]