Python newbieはここで、BeautifulSoupとNLTKを使った私の最初のウェブスクレイピング/単語頻度解析に取り組んでいます。複数のリストをPythonに結合する方法 - BeautifulSoup NLTK解析
私は、犯罪者の最後の声明のテキサス州法務省のアーカイブを掻いています。
各犯罪者のページから分析したいテキストを抽出し、すべての段落のトークンをトークンできるようになったが、段落ごとにトークン化された単語のリストが返されている。私は、リストを組み合わせてトークン化された単語のリストを返して、違反者1人を分析したいと考えています。
私は当初、.joinを使って私の問題を解決できると思っていましたが、段落ごとに1つのリストを返しています。私もitertoolsを試してみました。運がない。
犯罪者の声明で最も一般的な単語を見つけるコードは次のとおりですが、各段落から最も一般的な単語が返されています。 ご協力いただければ幸いです!
from bs4 import BeautifulSoup
import urllib.request
import re
import nltk
from nltk import FreqDist
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.corpus import stopwords
resp = urllib.request.urlopen
("https://www.tdcj.state.tx.us/death_row/dr_executed_offenders.html")
soup = BeautifulSoup(resp,"lxml",
from_encoding=resp.info().get_param('charset'))
for link in soup.find_all('a', href=re.compile('last'))[1:2]:
lastlist = 'https://www.tdcj.state.tx.us/death_row/'+link['href']
resp2 = urllib.request.urlopen(lastlist)
soup2 = BeautifulSoup(resp2,"lxml",
from_encoding=resp2.info().get_param('charset'))
body = soup2.body
for paragraph in body.find_all('p')[4:5]:
name = paragraph.text
print(name)
for paragraph in body.find_all('p')[6:]:
tokens = word_tokenize(paragraph.text)
addWords =
['I',',','Yes','.','\'m','n\'t','?',':',
'None','To','would','y\'all',')','Last','\'s']
stopWords = set(stopwords.words('english')+addWords)
wordsFiltered = []
for w in tokens:
if w not in stopWords:
wordsFiltered.append(w)
fdist1 = FreqDist(wordsFiltered)
common = fdist1.most_common(1)
print(common)
うわー - それでした!ありがとうDevaraj! – MHolmer
しかし、なぜあなたはEveryに対して 'stopWords'を再構築していますか?くそー。段落?それは時間の巨大な浪費です。 – alexis
@alexisが正しいです。ストップワードリストの作成は、メインループの外側にある必要があります。 –