НЛТК повторно исследовать проблему - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь токенизировать предложение и затем удалить пунктуацию.

from nltk import word_tokenize
from nltk import re
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
sentence = "what's good people boy's"


tokens = word_tokenize(sentence)
tokens_nopunct = [word.lower() for word in tokens if re.search("\w",word)]
tokens_lemma = [lemmatizer.lemmatize(token) for token in tokens]

print(tokens_lemma)

Это дает вывод:

['what', "'s", 'good', 'people', 'boy', "'s"]

Но я хочу, чтобы он достиг результата: ['what', 'good', 'people' , 'boy']

Я просматривал nltk и документацию, и там говорится, что re.search - это то, как вы удаляете пунктуацию, но она не работает, есть что-то еще, что я пишу неправильно в моем коде?

1 Ответ

0 голосов
/ 07 декабря 2018

Это будет работать для удаления всех элементов с пунктуацией (не только 's):

import string

punc = set(string.punctuation)
a = ['what', "'s", 'good', 'people', 'boy', "'s"]
without_punc = list(filter(lambda x: x[0] not in punc, a))
print(without_punc)      //['what', 'good', 'people', 'boy']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...