#python-3.x #nltk
#python-3.x #nltk
Вопрос:
Я пытаюсь маркировать предложения с помощью nltk.tokenize
, но при запуске кода возникает следующая ошибка:
не удается импортировать имя ‘PunktWordTokenizer’.
Я пытался найти решение из разных источников, но не смог найти никакого решения. Я пытался использовать github-проблема, но безуспешно.
from nltk.tokenize import PunktWordTokenizer
tokenizer = PunktWordTokenizer()
tokenizer.tokenize("Can't is a contraction.")
Я ожидал, что предложения будут помечены, но произошла ошибка.
Комментарии:
1. Какую версию nltk вы установили?
2. Смотрите Эту связанную проблему на github от nltk: невозможно импортировать PunktWordTokenizer в nltk 3.3
Ответ №1:
Неясно, какой токенизатор вы хотите. Больше никто не вызывается PunktWordTokenizer
. Он был внутренним и не должен был быть общедоступным. Именно поэтому вы не можете импортировать это имя. Два класса с именами, наиболее близкими к этому, называются WordPunctTokenizer
и PunktSentenceTokenizer
.
Импортируйте правильное имя, и оно будет работать:
>>> import nltk
>>> from nltk.tokenize import WordPunctTokenizer
>>> tokenizer = WordPunctTokenizer()
>>> tokenizer.tokenize("Can't is a contraction.")
['Can', "'", 't', 'is', 'a', 'contraction', '.']
Поскольку вы говорите, что ищете маркированные предложения, то, возможно, вам нужно другое:
>>> from nltk.tokenize import PunktSentenceTokenizer
>>> tokenizer = PunktSentenceTokenizer()
>>> tokenizer.tokenize("Can't is a contraction.")
["Can't is a contraction."]
>>> tokenizer.tokenize("Can't is a contraction. So is hadn't.")
["Can't is a contraction.", "So is hadn't."]