web-dev-qa-db-ja.com

段落を文にトークン化してから、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)

ただし、これは機能せず、エラーが発生します。それでは、段落を文にトークン化し、次に単語にトークン化するにはどうすればよいですか?

段落の例:

このことは小さな茶色の犬を圧倒して驚かせたようで、彼を心臓に傷つけました。彼は子供の足元に絶望して沈みました。彼は背中をひっくり返し、独特の方法で彼の足を支えた。同時に彼の耳と目で彼は子供に小さな祈りを捧げた。

**警告:**これはインターネットからの単なるランダムなテキストであり、上記のコンテンツは所有していません。

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)
33
slider

これは短いバージョンです。これにより、個々の文、および文内の各トークンのデータ構造が得られます。乱雑で現実の言語にはTweetTokenizerが好きです。文のトークナイザーは適切であると見なされますが、このステップの後までWordのケースを下げないように注意してください。乱雑なテキストの境界を検出する精度に影響を与える可能性があります。

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', '.']
]
6
Brian Cugelman