数据采集与融合技术大作业

发布时间 2023-12-14 22:26:38作者: StephenCurryykh
数据采集与融合技术实践 多源异构数据采集与融合应用综合实践
组名、项目简介 <组名:洛杉矶耐摔王、项目需求和目标:文字和音频总结、项目开展技术路线:python>
团队成员学号 102102127,102102124,102102125,102102123,102102144,102102146,102102126,102102145
这个项目的目标 对爬取或直接提交的文字进行概括总结,将音频文件转录成文本形式的内容,然后对音频内容进行总结和提取关键信息
其他参考文献 ...

一 项目整体

gitee链接

1 引言

在当今数据驱动的时代,多源异构数据采集与融合成为了解决复杂问题和获取全面洞察的关键步骤。我们的小组在多源异构数据采集与融合应用方面做了文字和音频总结,本博客将重点介绍我们的项目整体以及各成员在项目中的分工和贡献。

2 项目整体概述

本项目旨在开发一种应用,能够将文字和音频内容转化为简洁、准确的总结。通过结合先进的语音识别和自然语言处理技术,我们的目标是快速获取关键信息,节省时间和精力。项目的核心功能包括音频转录、文本分析和摘要生成。通过语音识别技术,我们将音频内容转录为文字形式,提供可读的文本输出。然后,通过自然语言处理和文本分析算法,我们将对转录的文本进行处理,提取出关键信息、核心要点和摘要,以便更快速地了解和理解内容。

3团队介绍

团队成员

102102127佘培强,102102124杨恺晖,102102125肖辰恺,102102123杨昕,
102102144郑荣城,102102146洪松渝,102102126吴启严,102102145胡嘉鑫

团队分工

文字总结部分:102102124杨恺晖,102102125肖辰恺,102102126吴启严,102102127佘培强
语音总结部分:102102144郑荣城,102102146洪松渝,102102145胡嘉鑫,102102123杨昕

4 项目亮点和挑战

项目亮点:

多模态处理:项目的亮点之一是能够处理文字和音频这两种不同的模态数据。通过将语音转录为文字,并对文字进行分析和摘要生成,我们能够为用户提供更全面、多样化的信息展示和获取方式。
高准确性和流畅性:项目追求高准确性和流畅性的转录和总结生成。我们将使用先进的语音识别模型和自然语言处理算法,以提供准确的转录结果和清晰的总结。这将为用户提供高质量的文字和音频总结,节省时间和提高工作效率。
自适应技术:项目将考虑数据的多样性和变化性,致力于开发自适应技术,以适应不同语音风格、口音和领域专业术语等。这将增强系统的适应性和可扩展性,适用于各种语音内容的处理和总结。

项目挑战:

语音识别准确性:语音识别是项目的核心技术之一,但在实际应用中,语音识别的准确性仍然面临一定的挑战。不同语音风格、口音、语速等因素可能会影响转录的准确性,需要不断优化和改进模型和算法,以提高识别的准确性。

多模态数据融合:将音频转录为文字后,需要将文字和音频的信息融合起来,生成准确、一致的总结。数据融合和一致性的处理是一个挑战,需要设计合适的算法和策略来确保转录和总结之间的一致性和完整性。

大规模数据处理:处理大规模的文字和音频数据需要高效的算法和系统设计。数据的规模和复杂性可能会导致计算和存储的挑战,需要考虑性能优化和资源管理,以保证系统的稳定性和高效性。

多领域应用:项目的应用领域广泛,涵盖会议记录、学习教育、语音资料处理等多个领域。不同领域的语音内容和需求差异较大,需要充分理解和满足不同领域用户的需求,提供定制化的功能和服务。

5 项目成果和应用

二 个人分工部分

1 分工

在这个项目中主要处理文本处理的后端代码的实现和华为云接口的调试应用。
通过华为云购买处理文本的接口功能,重写代码接口,并在后端接收前端发
送的内容进行运行,并将结果进行返回。

2 技术工作:

主要代码如下:

代码
from flask import Flask, request, jsonify, render_template
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdknlp.v2.region.nlp_region import NlpRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdknlp.v2 import *
import os
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options
from selenium.webdriver.support import expected_conditions as EC
import time

from selenium.webdriver.support.wait import WebDriverWait

import api

app = Flask(__name__)


# 初始化华为云NLP客户端
def create_nlp_client():
    ak = "ORAEUEXV4RREC1ZFPEPN"
    sk = "nUVOhC9fBe85rtfpiX3fyODtgRAEBlfpfxCqafiE"
    credentials = BasicCredentials(ak, sk)
    client = NlpClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(NlpRegion.value_of("cn-north-4")) \
        .build()
    return client


nlp_client = create_nlp_client()

#首页面
@app.route('/')
def index():
    return render_template('index.html')
#处理文本的页面
@app.route('t')
def txt():
    return render_template('text_summarizer.html')

#处理音频的页面
@app.route('/audio', methods=['GET'])
def audioPage():
    return render_template('audio_summarizer.html')

#进行文本处理的代码
@app.route('/summarize', methods=['POST'])
def summarize():
    global content
    url_data = request.form.get('url')
    text_data = request.form.get('text')
    file_data = request.files.get('file')
    summary_length = request.form.get('summary_length', type=int)

    content=""

    if url_data:
        # 使用爬虫获取网页内容
        edge_options = Options()
        edge_options.add_argument('--headless')
        edge_options.add_argument('--disable-gpu')
        driver = webdriver.Edge(options=edge_options)
        driver.get(url_data)
        try:
            WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "h1")))
            content = driver.find_element(By.XPATH, '//*[@class="article"]').text
        except TimeoutException:
            return jsonify({'error': '加载页面元素超时'})
        finally:
            driver.quit()
    elif file_data:
        content = file_data.read().decode('utf-8')
    elif text_data:
        content = text_data

    print(url_data)
    print(content)

    if not content:
        return jsonify({'summary': '没有提供内容。'})


    content = content.replace('\n', '').replace('\r', '').replace('\t', '').replace('\s+', '').replace('\s', '')
    original_length = len(content)
    length_limit = float(summary_length / original_length if original_length > 0 else 0)
    print(content)
    print(length_limit)

    # 使用华为云NLP服务生成总结
    try:
        summary_request = RunSummaryDomainRequest()
        summary_request.body = SummaryDomainReq(
            content=content,
            length_limit=length_limit,  # 或者根据需求调整
            lang="zh"  # 或根据实际情况调整
        )
        response = nlp_client.run_summary_domain(summary_request)
        summary = response.summary
    except exceptions.ClientRequestException as e:
        return jsonify({'error': e.error_msg}), e.status_code

    return jsonify({'summary': summary})

@app.route('/summarize_audio', methods=['POST'])
def summarizeAudioRoute():
    # 获取表单数据
    file = request.files.get('file')

    summary_length = request.form.get('summary_length', type=int) or 10

    if file:
        # 处理上传的文件
        file.save(file.filename)
    else:
        return jsonify({'summary': '没有提供内容。'})

    # 在这里添加你的文本总结逻辑
    content = api.audio2Text('./' + file.filename)
    print(content)
    content = content.replace('\n', '').replace('\r', '').replace('\t', '').replace('\s+', '').replace('\s', '')
    original_length = len(content)

    length_limit = float(summary_length / original_length if original_length > 0 else 0)

    summary = api.summarizeText('', content, length_limit=length_limit)

    return jsonify({'summary': summary})


if __name__ == '__main__':
    app.run(debug=True)

界面如下: ![image](https://img2023.cnblogs.com/blog/3286253/202312/3286253-20231214221149807-678906294.jpg)

有三种方式,第一种可以接收文件,第二种可以接收文本框内容,第三种可以上传url地址,主要用新浪网的url地址。
输入后点击总结就可以输出内容了

3 解决问题:

在接口调试中出现了总结不出来的情况,后面发现是参数设置有问题,调用华为云接口中length_limit时需要设置总结的比例,没有设置时会直接输出整个文本,没有输出。

4 贡献:

为后端的功能实现与华为云接口调用做出贡献。

5 合作与协调:

与前端人员进行交接,对接接口。