[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 не работает с несколькими предложениями: точки добавляются к последнему слову.




Я использую этот код для удаления пунктуации:

import nltk
def getTerms(sentences):
    tokens = nltk.word_tokenize(sentences)
    words = [w.lower() for w in tokens if w.isalnum()]
    print tokens
    print words

getTerms("hh, hh3h. wo shi 2 4 A . fdffdf. A&&B ")

И если вы хотите проверить, является ли токен допустимым английским словом или нет, вам может понадобиться PyEnchant

Руководство:

 import enchant
 d = enchant.Dict("en_US")
 d.check("Hello")
 d.check("Helo")
 d.suggest("Helo")



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

tokens = nltk.wordpunct_tokenize(raw)

type(tokens)

text = nltk.Text(tokens)

type(text)  

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



Links