Разметить абзац на предложение, а затем на слова в 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)
Однако это не работает и дает мне ошибки. Итак, как я могу разбить абзацы на предложения, а затем на слова?
Пример абзаца:
Эта штука, казалось, подавила и поразила маленького темно-коричневого пса и ранила его до глубины души. Он в отчаянии опустился на ноги ребенка. Когда удар повторился вместе с предостережением в детских предложениях, он перевернулся на спину и своеобразно держал свои лапы. В то же время своими ушами и глазами он предложил маленькую молитву ребенку.
** ПРЕДУПРЕЖДЕНИЕ:** Это просто случайный текст из Интернета, я не являюсь владельцем вышеуказанного контента.
2 ответа
Вы, вероятно, намеревались перебрать 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)
Вот более короткая версия. Это даст вам структуру данных с каждым отдельным предложением и каждым токеном в предложении. Я предпочитаю 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', '.']
]
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()]
Последняя строка выше гарантирует, что на выходе будут только слова, а не специальные символы. Вывод предложения выглядит следующим образом.
["Эта штука, казалось, одолела и поразила маленького темно-коричневого пса и ранила его в самое сердце"."Он в отчаянии опустился к ногам ребенка"."Когда удар был повторен, вместе с предупреждением в с детскими фразами, он перевернулся на спину и своеобразным образом держал лапы "," Одновременно с ушами и глазами он вознес маленькую молитву ребенку ".
Вывод слов после удаления специальных символов приведен ниже.
['Этот', 'вещь', 'казался', 'чтобы', 'пересилить', 'и', 'удивить', 'тот', 'маленький', 'собака', 'и', 'раненый', ' ему ',' в ',' в ',' сердце ',' он ',' утонул ',' вниз ',' в ',' отчаяние ',' у ',' в ',' ребенок ',' ноги ', 'Когда', 'то', 'удар', 'было', 'повторено', 'вместе', 'с', 'ан', 'предостережение', 'в', 'по-детски', 'предложения', ' он ',' повернулся ',' перевернулся ',' на ',' его ',' спина ',' и ',' держал ',' его ',' лапы ',' в ',' а ','своеобразный ',' манера ',' В ',' тот ',' тот же ',' время ',' с ',' его ',' уши ',' и ',' его ',' глаза ',' он ', 'приношение', 'а', 'малый', 'молитва', 'к', 'ребенку']