2025.2.18

今天为开学考试做准备,建民主任给出的要求如下:

作业内容: 1、 学习构建北京市政百姓信件分析实战案例,完成 (1) 采集北京市政百姓信件内容; (2) 编写MapReduce程序清洗信件内容数据; (3) 利用HiveSql语句离线分析信件内容数据; (4) 利用Sqoop导出Hive分析数据到MySQL库; (5) 开发JavaWeb+ECharts 完成信件数据图表展示过程。 2、 根据上述所学知识完成一个工程项目: (1) 项目名称:信息化领域热词分类分析及解释 (2) 功能设计: 1) 数据采集:要求从定期自动从网络中爬取信息领域的相关热 词; 2) 数据清洗:对热词信息进行数据清洗,并采用自动分类技术 生成信息领域热词目录,; 3) 热词解释:针对每个热词名词自动添加中文解释(参照百度 百科或维基百科); 4) 热词引用:并对近期引用热词的文章或新闻进行标记,生成 超链接目录,用户可以点击访问; 5) 数据可视化展示: ① 用字符云或热词图进行可视化展示; ② 用关系图标识热词之间的紧密程度。 6) 数据报告:可将所有热词目录和名词解释生成WORD版报告 形式导出。 报告参考样式如下图所示: 作业要求: 1、 提交信息化领域热词分类分析及解释软件(微信小程序或APP更佳),要求 生成软件的安装程序; 2、 提交结果报告一份(电子版); 3、 提交截至日期:2019-1-10。 常用自然语言处理和分析相关技术简介: (1)自动分词技术 以词典为基础,规则与统计相结合的分词技术,有效解决切分歧义。综合运用 基于概率统计的语言模型方法,分词准确性达到99%。 (2)自动关键词和自动摘要技术 对采集到的网络信息,自动摘取相关关键字,并生成摘要,并与快速浏览与检 索。 (3)全文检索技术 全文检索将传统的全文检索技术与最新的 WEB 搜索技术相结合,大大提升检索 引擎的性能指标。还融合多种技术,提供丰富的检索手段以及同义词等智能检索方式。 (4)自动分类技术 基于内容对经过双重过滤处理后的重要舆情自动分类,无需人工干预,准确率 达到95%以上。先设置分类关键词,每一个关键词都设置一个相应的优先级分值。对 收集到的文章内容进行分析,分别对标题和内容进行匹配,统计匹配的次数,然后根 据设定好的关键字匹配模型对每个关键字进行分值计算。分值超过一定分值的都将自 动处理所对应的处理,匹配分值最高的关键字就自动分类。 (5)自动聚类技术 基于相似性算法的自动聚类技术,自动对海量的无规则文档进行归类,把内容 相近的文档归为一类,并自动为其生成主题词,为确定类目名称提供方便。 (6)相似性排重技术 采用“文章相似性技术”根据文档内容的匹配程度确定是否重复,比利用网页 标题和大小等规则判断具有更强的准确性、实用性以及运行效率。采用中文分词技术 对文章关键字比较计算,得出文章相似度,相似度高于 0.75 以上的文章系统默认处 理为“已处理”,无需再进行任何操作,相似度位于 0.5-0.75 之间的相似转载文章 需要用户在页面进行再次确认,确保文章无漏处理。

看了一下,我可能需要使用使用python爬虫爬取一些网络数据,然后以文件形式保存到本地并导入到虚拟机中,然后导入到hive数据库并导出到MySQL后进行网页和安卓的相关开发,任务量很大,应该是完成不了的,明天能做多少做多少吧。

今天进行python的网络爬取尝试并将爬取的内容保存到文件中,相关代码如下:

import xlrd  # 用于读取 Excel 文件
import xlsxwriter  # 用于写入 Excel 文件
import requests  # 用于网络请求
from bs4 import BeautifulSoup  # 用于解析网页
import jieba.analyse  # 用于关键词提取

# 1. 读取 Hotwork.xls 文件中的文章标题
def read_titles_from_excel(file_path):
    """
    从 Excel 文件中读取文章标题
    """
    titles = []
    try:
        workbook = xlrd.open_workbook(file_path)
        sheet = workbook.sheet_by_index(0)  # 假设标题在第一个工作表中
        for row_idx in range(sheet.nrows):
            if row_idx == 0:  # 跳过标题行
                continue
            titles.append(sheet.cell(row_idx, 0).value.strip())  # 假设标题在第一列
        print(f"成功读取 {len(titles)} 个标题")
        return titles
    except Exception as e:
        print(f"读取 Excel 文件失败: {str(e)}")
        return []

# 2. 提取信息领域热词
def extract_hotwords(titles, topK=50):
    """
    使用 TF-IDF 算法提取信息领域热词
    """
    hotwords = jieba.analyse.extract_tags(" ".join(titles), topK=topK, withWeight=True)
    print(f"成功提取 {len(hotwords)} 个热词")
    return hotwords

# 3. 获取百科解释(百度百科或维基百科)
def get_baidu_baike_summary(keyword):
    """
    从百度百科获取关键词的解释
    """
    url = f"https://baike.baidu.com/item/{keyword}"
    response = requests.get(url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, "html.parser")
        # 提取百度百科的摘要内容
        summary = soup.find("div", class_="lemma-summary")
        if summary:
            return summary.get_text().strip()
    return None

def get_wiki_summary(keyword):
    """
    从维基百科获取关键词的解释
    """
    url = f"https://zh.wikipedia.org/wiki/{keyword}"
    response = requests.get(url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, "html.parser")
        # 提取维基百科的摘要内容
        summary = soup.find("div", class_="mw-parser-output").find("p")
        if summary:
            return summary.get_text().strip()
    return None

def get_baike_summary(keyword):
    """
    获取百科解释的综合函数
    """
    print(f"正在查询百科解释: {keyword}")
    summary = get_baidu_baike_summary(keyword)
    if summary:
        return summary
    else:
        return get_wiki_summary(keyword)

# 4. 保存结果到 Excel 文件
def save_to_excel(hotwords_with_summary, output_file):
    """
    将热词及其百科解释保存到 Excel 文件
    """
    workbook = xlsxwriter.Workbook(output_file)
    worksheet = workbook.add_worksheet()

    # 设置表头
    headers = ["热词", "权重", "百科解释"]
    for col, header in enumerate(headers):
        worksheet.write(0, col, header)

    # 写入数据
    for row, (hotword, weight) in enumerate(hotwords_with_summary, start=1):
        worksheet.write(row, 0, hotword)
        worksheet.write(row, 1, weight)
        # 获取百科解释
        summary = get_baike_summary(hotword)
        worksheet.write(row, 2, summary if summary else "未找到解释")

    workbook.close()
    print(f"结果已保存到 {output_file}")

# 主程序
if __name__ == "__main__":
    # 配置
    INPUT_EXCEL = "Hotword.xls"
    OUTPUT_EXCEL = "Hotwords_with_summary.xlsx"
    TOP_K = 50  # 提取前 50 个热词

    # 1. 读取文章标题
    titles = read_titles_from_excel(INPUT_EXCEL)

    # 2. 提取热词
    hotwords = extract_hotwords(titles, TOP_K)

    # 3. 保存热词及其百科解释到 Excel
    save_to_excel(hotwords, OUTPUT_EXCEL)

爬取的数据示例:

 

posted @ 2025-02-18 23:32  贾贾鱼  阅读(12)  评论(0)    收藏  举报