学英语,无论目的何在,词汇量总是一个绕不过去的坎,没有足够的词汇量,都难以用文法来组词造句。
前段时间,恶魔的奶爸提供了几份偏向于各个领域的高频词汇,很是不错。
最近用Python写爬虫入门教程的时候,碰到过几个英文网站,便有了统计一份网站英文单词词频的念头。
3000高频单词库说明:
来源:http://www.chinadaily.com.cn/ 全站4700+个网页
剔除127个常见停用词,剔除单词长度为1的单词,剔除网站英文名chinadaily。
我年纪还轻,阅历不深的时候,我父亲教导过我一句话,我至今还念念不忘。 “每逢你想要批评任何人的时候, ”他对我说,“你就记住,这个世界上所有的人,并不是个个都有过你拥有的那些优越条件。”
——《了不起的盖茨比》
以下为3000高频词汇的提取过程,如需最后的单词库,直接拉到文末。
1.爬取ChinaDaily全站网页URL
def get_all_link(url):
try:
# 分割网址
host = url.split('/')
# print(host[2])
wbdata = requests.get(url).text
soup = BeautifulSoup(wbdata,'lxml')
for link in soup.find_all('a'):
# 判断网页中提取的URl形式
if link.get('href') not in pages and link.get('href') is not None:
if link.get('href').startswith('http'):
if link.get('href').split('/')[2] == host[2]:
newpage = link.get('href')
# print(newpage)
pages.add(newpage)
get_all_link(newpage)
elif link.get('href').startswith('/'):
newpage = link.get('href')
pages.add(newpage)
newpage_url = 'http://'+host[2]+newpage
# print(newpage_url)
get_all_link(newpage_url)
print('url数量:'+str(len(pages)))
except BaseException as e:
print('程序出错:{0}'.format(e))
2.请求爬取的URL并解析网页单词
# 解析网页单词并写入文本文件
def resolve_html(url):
wbdata = requests.get(url).content
soup = BeautifulSoup(wbdata,'lxml')
# 替换换行字符
text = str(soup).replace('\n','').replace('\r','')
# 替换
text = re.sub(r'\.*?\\>',' ',text)
# 替换HTML标签
text = re.sub(r'\<.*?\>'," ",text)
text = re.sub(r'[^a-zA-Z]',' ',text)
# 转换为小写
text = text.lower()
text = text.split()
text = [i for i in text if len(i) > 1 and i != 'chinadaily']
text = ' '.join(text)
print(text)
with open("j:\python\words.txt",'a+',encoding='utf-8') as file:
file.write(text+' ')
print("写入成功")
if __name__ == '__main__':
pool = Pool(processes=2)
pool.map_async(resolve_html,urllist)
pool.close()
pool.join()
print('运行完成')
3.对单词文本文件进行词频处理
# 对单词文本文件进行词频处理
def resolve_words():
corpath = 'J:\\python\\words'
wordlist = PlaintextCorpusReader(corpath,'.*')
allwords = nltk.Text(wordlist.words('words.txt'))
print("单词总数",len(allwords))
print("单词个数",len(set(allwords)))
stop = stopwords.words('english')
swords = [i for i in allwords if i not in stop]
print("去除停用词的单词总数:",len(swords))
print("去除停用词的单词个数:",len(set(swords)))
print("开始词频统计")
fdist = nltk.FreqDist(swords)
print(fdist.most_common(3000))
for item in fdist.most_common(3000):
print(item,item[0])
with open('J:\\python\\words3000.txt','a+',encoding='utf-8') as file:
file.write(item[0]+'\r')
print("写入完成")
结果为:
单词总数 3537063
单词个数 38201
去除停用词的单词总数: 2603450
去除停用词的单词个数: 38079
部分单词及词频为:
('online', 8788)
('business', 8772)
('society', 8669)
('people', 8646)
('content', 8498)
('story', 8463)
('multimedia', 8287)
('cdic', 8280)
('travel', 7959)
('com', 7691)
('cover', 7679)
('cn', 7515)
('hot', 7219)
('shanghai', 7064)
('first', 6941)
('photos', 6739)
('page', 6562)
('years', 6367)
('paper', 6289)
('festival', 6188)
('offer', 6064)
('sports', 6025)
('africa', 6008)
('forum', 5983)
最后得到一个包含3000个高频词汇的txt文本文件,大家可以将其导入到各大单词软件的单词本中。
下载地址:
关注微信公众号:州的先生
回复关键字:3000高频词
分享到: