酷代码 AI
菜单
全部AI  /  AI写代码神器
服务商

使用pycharm从网站“https://so.gushiwen.cn/gushi/tangshi.aspx”中采集唐诗三百首的内容。具体要求如下:1. 采集数据完整,内容规范(即不包含特殊符号,如换行符、制表符等)。2. 结果数据保存为txt格式的文本文件,每一行包含一首古诗,具体包括信息:诗类型、诗题目、诗内容、诗作者;3. 代码逻辑结构清晰,语法规范。任务二 文本特征向量化 基于任务一的结果数据,针对“诗内容”,完成文本特征向量化(tf-idf值)输出。具体要求如下:1. 数据完整,内容规范(即数值化);2. 结果数据保存为txt格式的文本文件,每一行包含一首古诗,具体包括信息:诗类型、诗题目、诗内容、诗作者、文本特征向量(tf-idf值, 多列);3. 代码逻辑结构清晰,语法规范。任务三 数据统计分析 基于任务一的结果数据,完成诗词统计。具体要求如下:1. 统计每种诗类型的诗数量,结果数据保存为excel文件;2. 统计每个作者的诗数量,结果数据保存为excel文件;3. 对诗内容进行中文分词,并输出词云图;4. 代码逻辑结构清晰,语法规范。

下面是一个使用PyCharm进行数据采集、文本特征向量化和数据统计分析的示例代码。请确保在运行代码之前已安装所需的库(如beautifulsoup4、jieba、wordcloud、pandas等)。 首先,我们需要使用爬虫技术从网站上获取唐诗三百首的内容,并保存到txt文件中。以下是实现此功能的代码: ```python import requests from bs4 import BeautifulSoup # 爬取唐诗三百首的内容 def scrape_data(): url = "https://so.gushiwen.cn/gushi/tangshi.aspx" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" } response = requests.get(url, headers=headers) if response.status_code == 200: soup = BeautifulSoup(response.text, "html.parser") content_divs = soup.find_all('div', class_='cont') poems = [] for div in content_divs: poem_type = div.p.get_text()[:-1] # 诗类型 poem_title = div.a.get_text() # 诗题目 poem_author = div.p.find_all('a')[1].get_text() # 诗作者 poem_content = div.find('div', class_='contson').get_text().replace('\n', '') # 诗内容 poem = f"{poem_type}\t{poem_title}\t{poem_content}\t{poem_author}" poems.append(poem) return poems else: print("请求失败") return None # 保存爬取的数据到txt文件 def save_to_txt(data, filename): with open(filename, 'w', encoding='utf-8') as f: for item in data: f.write(item + '\n') # 执行爬取数据并保存到txt文件 if __name__ == '__main__': poems = scrape_data() if poems: save_to_txt(poems, "poems.txt") print("数据采集完成并保存为txt文件!") ``` 接下来,我们需要对任务一中保存的txt文件进行文本特征向量化(使用tf-idf值)。以下是实现此功能的代码: ```python import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer # 读取txt文件中的数据 def read_data(filename): with open(filename, 'r', encoding='utf-8') as f: lines = f.readlines() return lines # 对文本进行特征向量化 def tfidf_vectorization(data): vectorizer = TfidfVectorizer() features = vectorizer.fit_transform(data) feature_names = vectorizer.get_feature_names() df = pd.DataFrame(features.toarray(), columns=feature_names) return df # 保存特征向量化后的数据到txt文件 def save_vectorization_to_txt(df, filename): with open(filename, 'w', encoding='utf-8') as f: for _, row in df.iterrows(): line = '\t'.join(map(str, row.values.tolist())) f.write(line + '\n') # 执行文本特征向量化并保存到txt文件 if __name__ == '__main__': data = read_data("poems.txt") df = tfidf_vectorization(data) save_vectorization_to_txt(df, "vectorization.txt") print("文本特征向量化完成并保存为txt文件!") ``` 我们需要对任务一中保存的txt文件进行数据统计分析。以下是实现此功能的代码: ```python import os import jieba import pandas as pd import matplotlib.pyplot as plt from collections import Counter from wordcloud import WordCloud # 统计每种诗类型的诗数量,并保存为excel文件 def count_poem_type(data): poem_types = [item.split('\t')[0] for item in data] counter = Counter(poem_types) df = pd.DataFrame(counter.most_common(), columns=['诗类型', '数量']) df.to_excel("poem_type_count.xlsx", index=False) # 统计每位作者的诗数量,并保存为excel文件 def count_poem_author(data): poem_authors = [item.split('\t')[-1].strip() for item in data] counter = Counter(poem_authors) df = pd.DataFrame(counter.most_common(), columns=['作者', '数量']) df.to_excel("poem_author_count.xlsx", index=False) # 对诗内容进行中文分词,并生成词云图 def create_wordcloud(data): poem_contents = [item.split('\t')[2] for item in data] text = '\n'.join(poem_contents) words = ' '.join(jieba.lcut(text)) wordcloud = WordCloud(width=800, height=400, background_color='white').generate(words) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show() # 执行数据统计分析 if __name__ == '__main__': with open("poems.txt", 'r', encoding='utf-8') as f: data = f.readlines() count_poem_type(data) count_poem_author(data) create_wordcloud(data) print("数据统计分析完成!") ``` 上述代码中的爬虫部分仅针对指定的网站进行了简单处理,可能不适用于其他网站的爬取。在实际运行前,请先检查代码中的请求头部参数和页面解析方式,以确保代码正确运行。 [2024-06-24 01:04:38 | AI写代码神器 | 2961点数解答]

热门AI查看更多
“AI写代码神器”擅长各种语言编程、解释代码、注解补充。 在这里填写你的问题。如:写出java冒泡排序算法。
一个入口掌握所有。 在这输入任何问题,或者要AI输出的内容。
将阿拉伯数字转为人明币大写,如:数字1000转换为壹仟。
AI生成爆文标题,能够快速创作出极具吸引力的标题,促使短视频、自媒体文章的点击率与阅读量迅猛攀升。 此处填写一个原始标题,如:一般人怎样打理自身的社交圈?
AI生成新闻评论。 在这里填入新闻内容。
AI生成内容摘要。 在此处填入需要生成摘要的内容,还可以输入4000字。
AI生成主持词,擅长团建、年会、婚礼、节日等场合的主持词编写。 在这里填入主持场景,如:运动会
AI快速生成周报、月报、日报、年终总结等各类总结报告。 在这里简单输入工作目标、指标、成果,没有任何格式或特殊需求。如:计划年销售业绩1000万,实际完成800万。
输入一个字,显示以这个字开头的歇后语
输入一个字,显示以这个字开头的成语
极速在线生成证件照
极速更换证件照红、蓝、白底色
实用工具查看更多
阿里云99元2核2G服务器/年,199元2核4G服务器随心买。
今日油价 [生活类]
全国各省油价,实时更新。
图片互转base64 [开发类]
将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页、编辑器中。 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地方。
时间转换器 [开发类]
时间戳转换器,时间、毫秒、秒、倒计时查看
录入名字、电话、邮箱、个人介绍信息,生成二维码,可通过此码扫码添加微信联系人
数独游戏 [娱乐类]
数独(Sudoku)是经典的9x9数字逻辑谜题。在有81个小格的九宫格内,玩家依据初始数字推理填入1 - 9的数字,要保证每行、每列以及每个3x3宫格中的数字都不重复。这款在线数独游戏有多难度可选,没有头绪时,可以点开答案看一下哦^_^
经典推箱子 [娱乐类]
基于H5的经典推箱子小游戏,锻炼玩家的眼力和反应力,非常不错
AI摸鱼五子棋 [娱乐类]
基于H5的五子棋人机对练,锻炼玩家的眼力和反应力,非常不错
相关提问