[Python] Как избавиться от пунктуации с помощью токенизатора NLTK?


Answers

Вам не нужно NLTK для удаления знаков препинания. Вы можете удалить его с помощью простого python. Для строк:

import string
s = '... some string with punctuation ...'
s = s.translate(None, string.punctuation)

Или для unicode:

import string
translate_table = dict((ord(char), None) for char in string.punctuation)   
s.translate(translate_table)

а затем используйте эту строку в своем токенизаторе.

В модуле PS string есть несколько других наборов элементов, которые можно удалить (например, цифры).

Question

Я только начинаю использовать NLTK, и я не совсем понимаю, как получить список слов из текста. Если я использую nltk.word_tokenize() , я получаю список слов и знаков препинания. Мне нужны только слова. Как я могу избавиться от пунктуации? Также word_tokenize не работает с несколькими предложениями: точки добавляются к последнему слову.




Я просто использовал следующий код, который удалил всю пунктуацию:

tokens = nltk.wordpunct_tokenize(raw)

type(tokens)

text = nltk.Text(tokens)

type(text)  

words = [w.lower() for w in text if w.isalpha()]



Ниже код удалит все знаки препинания, а также не буквенные символы. Скопированы из их книги.

http://www.nltk.org/book/ch01.html

import nltk

s = "I can't do this now, because I'm so tired.  Please give me some time. @ sd  4 232"

words = nltk.word_tokenize(s)

words=[word.lower() for word in words if word.isalpha()]

print(words)

вывод

['i', 'ca', 'do', 'this', 'now', 'because', 'i', 'so', 'tired', 'please', 'give', 'me', 'some', 'time', 'sd']