羲和数据集收集器1.3
为了实现所要求的功能,我们需要进一步完善代码,使其能够处理多种格式的输入文件,并生成符合要求的 JSON 格式的输出文件。具体来说,我们完善了以下内容:
增强 extract_qa_pairs_from_content 函数:使其能够识别和处理不同格式的 QA 对。
确保输出文件的格式正确:每个 QA 对占一行,且格式为 JSON。
以下是完善后的代码:
import os
import json
import fitz # PyMuPDF
import docx
import re
import tkinter as tk
from tkinter import filedialog, messagebox, simpledialog
import logging
# 设置日志记录
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def clean_text(text):
""" 清理文本,去除多余的空白字符和标点符号,替换影响数据集的特殊字符 """
text = re.sub(r'\s+', ' ', text) # 合并多个空白字符
text = re.sub(r'[^\w\s]', '', text) # 去除标点符号
text = re.sub(r'"', "'", text) # 替换双引号
text = re.sub(r'\\', '/', text) # 替换反斜杠
return text.strip()
def extract_qa_pairs_from_txt(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
content = clean_text(content)
qa_pairs = extract_qa_pairs_from_content(content)
return qa_pairs
def extract_qa_pairs_from_docx(file_path):
doc = docx.Document(file_path)
content = []
for para in doc.paragraphs:
content.append(para.text)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
content.append(cell.text)
for rel in doc.part.rels.values():
if "textBox" in rel.target_ref:
text_box = rel.target_part
for element in text_box.element.body:
if element.tag.endswith('p'):
content.append(element.text)
content = '\n'.join(content)
content = clean_text(content)
qa_pairs = extract_qa_pairs_from_content(content)
return qa_pairs
def