Ошибка при импорте ‘PunktWordTokenizer’

#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."]