Infosys_Text Summarization

Python 2025-07-26

infosy_text-summarization

Mohan Krishna GR的一个项目,AI/ML Intern @ Infosys Springboard,2024年夏季。

内容

  • 问题陈述
  • 项目声明
  • 解决方案方法
  • 背景研究
  • 解决方案
  • 工作流程
  • 数据收集
  • 抽象文本摘要
  • 提取文本摘要
  • 测试
  • 部署
  • 容器化
  • CI/CD管道

问题声明

  • 开发一个自动化的文本摘要系统,该系统可以准确有效地将大型文本凝结成简洁的摘要对于增强业务运营至关重要。
  • 该项目旨在部署NLP技术,以创建能够在不同域上处理各种文档的强大文本摘要工具。
  • 系统应提供高质量的摘要,以保留原始文本的核心信息和上下文含义。

项目说明

  • 文本摘要的重点是将大型文本体转换为一些句子,总结较大文本的要旨。
  • 文本摘要有各种各样的应用程序,包括新闻摘要,客户评论,研究论文等。
  • 该项目旨在了解文本摘要的重要性,并应用不同的技术来实现目的。

解决

  • 方案的方法:预期计划

背景研究

  • 文献评论

解决方案

  • 选择的深度学习体系结构

工作流程

  • 工作流程用于抽象文本摘要:

  • 提取文本摘要的工作流程:

数据收集

  • 数据预处理和预处理在src/data_preprocessing中实现。
  • 来自不同来源的数据收集:
    • CNN,《每日邮报》:新闻
    • 法案:法律
    • ARXIV:科学
    • 对话:对话
  • 数据集成确保鲁棒和多目标数据,包括新闻文章,法律文件 - 法律,判断,科学论文和对话。
  • 使用每个数据源的频率绘图通过数据统计数据和探索性数据分析(EDA)验证了数据。
  • 针对NLP任务进行了优化的数据清洁:删除了无效记录,下刻度,标点符号去除,停止单词删除和lemmatization。
  • 使用SCI-KIT学习数据进行培训,测试和验证CSV格式保存的模型。

抽象文本摘要

模型培训和评估

  • 培训:
    • 抽象摘要的选定变压器体系结构:对预训练的模型进行微调。
    • 选择Facebook的BART大型模型,用于其性能指标和有效的可训练参数。
      • 406,291,456培训参数。

  • 方法:
    • 本地Pytorch实施
    • 培训师API实施

方法1-本机Pytorch

  • 使用手动训练环和Pytorch中的评估循环训练了该模型。实施: src/model.ipynb
  • 模型评估:源代码: src/evaluation.ipynb
    • 获得了不一致的推论结果。
    • rouge1(f-measure)= 00.018
    • 使用方法1训练时有一个可疑的张量错误,这可以归因于模型输出的不一致。
    • 被拒绝进行进一步部署。
    • 艰苦需要实施替代方法。

方法2 - 培训师类实施

  • 利用教练API从拥抱面前进行优化的变压器模型培训。实施: src/bart.ipynb

    • 该模型在125420步骤中使用了26:24:22(HH:MM:SS)的整个数据集进行了10个时期的培训。
  • 评估:使用胭脂分数的性能指标。源代码: src/rouge.ipynb

    • 模型2-结果优于方法1。Rouge1
    • (f-measure)= 61.32- >基准分级
      • 明显高于公共数据集上最新模型的典型分数。
    • 文本摘要的GPT4性能-ROUGE1(F -measure)为63.22
    • 进行进一步部署。
  • 比较分析显示微调后的性能显着改善。源代码: src/compare.ipynb


提取性文本摘要

  • 而不是选择基于规则的方法的计算密集程度深度学习模型将导致最佳解决方案。利用了一种新的和新颖的方法来组合从TF-IDF和Kmeans聚类方法中获得的矩阵。
  • 它是专门应用于单个文档中嵌入的多个低级专业实体(IE,组)的扩展主题建模。它在单个文档和集群级别上运行。
  • 最接近质心(基于欧几里得距离)的句子被选为该集群的代表性句子。
  • 实现:预处理文本,使用TF-IDF提取功能,然后通过选择代表性句子进行总结。
    • 植入和评估的源代码: src/Extractive_Summarization.ipynb
    • rouge1(f-measure)= 24.71

测试

  • 实现的文本摘要应用程序,使用Gradio库用于基于Web的接口,用于测试模型的推断。
  • 源代码: src/interface.ipynb

部署


应用

  • 程序文件结构: summarize/

API端点

  • 使用FastAPI框架来处理URL,文件和直接文本输入开发。
    • 源代码: summarizer/app.py
  • 端点:
    • 根端点
    • 汇总URL
    • 汇总文件
    • 汇总文本

提取器模块

  • 从各种来源(URL,PDF,DOCX)提取文本,使用BeautifulSoup和Fitz提取文本。
  • 源代码: summarizer/extractors.py

提取摘要脚本

  • 实现的提取摘要模块。与以下内容相同:src/bart.ipynb
  • 源代码: summarizer/extractive_summary.py

用户界面

  • 使用HTML,CSS和JavaScript开发了用户友好的接口。
  • 源代码: summarizer/templates/index.html

容器化

  • 开发了一个Dockerfile,以构建FastAPI应用程序的Docker映像。
  • 源代码: summarizer/Dockerfile
  • 映像: Docker Image

CI/CD管道

  • 使用Docker,Azure和GitHub操作开发了CI/CD管道。
  • 利用Azure容器实例(ACI)来部署图像,每次推动到主分支。
  • 源代码: .github/workflows/azure.yml
    • .github/workflows/main.yml (aws)
    • .github/workflows/azure.yml (azure)(azure)
  • 使用docker image run:
docker pull mohankrishnagr/infosys_text-summarization:final docker run -p 8000:8000 mohankrishnagr/infosys_text-summarization:final

然后在

http://local*h*ost*:8000/
Checkout
http://local*h*ost*:8000/

部署在AWS EC2中(不建议在免费步道下)

公共IPv4:

http://54.1**6*8.82.95/

部署在Azure容器实例(推荐)

公共IPv4:

http://20.2**19.*203.134:8000/
:8000/
http://20.2**19.*203.134:8000/

fqdn

http://mohankrishnagr.ce*ntralind*ia.a*zurecontainer.io:8000/
  • 屏幕截图:





结尾

感谢您对我们的项目的兴趣!我们欢迎任何反馈。随时与我们联系。

下载源码

通过命令行克隆项目:

git clone https://github.com/MohanKrishnaGR/Infosys_Text-Summarization.git