【发布时间】:2018-06-11 13:18:59
【问题描述】:
我完全是 nltk 和 python 的新手。我的任务是从 url 中提取所有文本。在阅读 nltk 文档后,我尝试并能够从指定的 url 中提取文本。我主要关心的是如何从提取的列表中删除特殊字符(如 .,-,"",'',!,)。下面提到的代码不适用于 html 网页的 <li> </li> 标记内的文本。因此,总是将点. 附加到<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)
【问题讨论】:
-
您在这一行缺少
'response = urllib.request.urlopen('https://wikipedia.org) -
现在已被编辑。感谢您的建议。
标签: python nlp html-lists punctuation