Как убрать пунктуацию списка в Python? - PullRequest
0 голосов
/ 11 июня 2018

Я новичок в nltk и python.Мне было дано задание извлечь все тексты из URL.Я попытался и смог извлечь текст из указанного URL после прочтения документации nltk.Моя главная задача - как удалить специальные символы (например,., -, "", '',!,) Из извлеченного списка.Приведенный ниже код не работает для текста внутри тега <li> </li> на веб-странице html.Таким образом, точка . всегда добавляется к последнему слову текста внутри тега <li>.Любая помощь высоко ценится.Исходный код выглядит следующим образом.

from bs4 import BeautifulSoup 
import urllib.request
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
response = urllib.request.urlopen('https://en.wikipedia.org/wiki/Electronics') 
f=open('corpus.txt','w+')
html = response.read() 
soup = BeautifulSoup(html,"html.parser") 
text = soup.get_text(strip=True)
tokens = [t for t in text.split()]
clean_tokens = tokens[:] 
sr = stopwords.words('english') 
for token in tokens: 
if token in sr: 
   clean_tokens.remove(token) 
   freq = nltk.FreqDist(clean_tokens) 
   for normalize,val in freq.items(): 
       lemmatizer=WordNetLemmatizer()
       corpus_refi=lemmatizer.lemmatize(str(normalize) + ':' + str(val), pos="a")
       corpus_refi=corpus_refi.lower()
       print(corpus_refi)  

1 Ответ

0 голосов
/ 11 июня 2018

Я не уверен, что правильно понял ваш вопрос, но если вы хотите обнаружить пунктуацию, вы можете сделать что-то вроде.

from string import punctuation
punc = set(punctuation)
# then inside your for loop, you can either skip if
if token not in punc:

в случае, если токен содержит несколько символов, один из которых является пунктуацией.Чтобы удалить его, вы можете сделать что-то вроде

token = translate(token.maketrans('', '', string.punctuation)) 
...