diff --git a/paper/latex/chapters/implementation.tex b/paper/latex/chapters/implementation.tex index 2df5678..3d00de3 100644 --- a/paper/latex/chapters/implementation.tex +++ b/paper/latex/chapters/implementation.tex @@ -37,7 +37,7 @@ \subsection{语料生成与处理技术} \subsubsection{Markdown文档解析} -该解析器采用树形结构组织Markdown文档内容,核心是通过栈结构维护标题层级关系。当遇到\#号开头的标题行时,解析器会根据\#号数量确定当前标题的层级,并通过栈结构维护父子关系。如果遇到比栈顶元素层级低的标题,会不断弹出栈顶元素直到找到合适的父节点。对于代码块内容,解析器会特殊处理以```或\textasciitilde{}\textasciitilde{}\textasciitilde{}开头的行,将其间的所有内容视为原始文本直接附加到当前节点,不进行任何解析。这种处理方式保证了代码块内的特殊字符不会被误解析为Markdown语法。文档内容的组织采用递归遍历方式。\texttt{process\_markdown\_fil}函数会先构建完整的文档树,然后通过\texttt{traverse}函数递归遍历所有节点。对于叶子节点(没有子节点的节点),会将从根节点到该节点的所有标题用``-\textgreater{}''连接,并与节点内容组合输出,形成完整的上下文信息。解析器还提供了\texttt{print\_tree}函数用于可视化文档结构,可以清晰展示各层级标题的嵌套关系和内容分布。这种树形结构表示法特别适合处理具有复杂层级关系的长文档,能够准确反映文档的原始组织结构。 +该解析器采用树形结构组织Markdown文档内容,核心是通过栈结构维护标题层级关系。当遇到\#号开头的标题行时,解析器会根据\#号数量确定当前标题的层级,并通过栈结构维护父子关系。如果遇到比栈顶元素层级低的标题,会不断弹出栈顶元素直到找到合适的父节点。对于代码块内容,解析器会特殊处理以```或\textasciitilde{}\textasciitilde{}\textasciitilde{}开头的行,将其间的所有内容视为原始文本直接附加到当前节点,不进行任何解析。这种处理方式保证了代码块内的特殊字符不会被误解析为Markdown语法。文档内容的组织采用递归遍历方式。\texttt{process\_markdown\_file}函数会先构建完整的文档树,然后通过\texttt{traverse}函数递归遍历所有节点。对于叶子节点(没有子节点的节点),会将从根节点到该节点的所有标题用``-\textgreater{}''连接,并与节点内容组合输出,形成完整的上下文信息。解析器还提供了\texttt{print\_tree}函数用于可视化文档结构,可以清晰展示各层级标题的嵌套关系和内容分布。这种树形结构表示法特别适合处理具有复杂层级关系的长文档,能够准确反映文档的原始组织结构。 \subsubsection{prompt模板套用和提示词格式引导} 通过PromptTemplate类构建动态提示词模板,前端界面支持选择预存模板并自动提取变量生成可编辑表格,实现提示词参数化;采用提示词追加JSON格式要求和API强制返回结构的双重保障机制确保输出结构化;支持多轮生成并记录详细耗时和token使用情况,同时具备异常处理能力;通过严格的数据验证流程将响应解析映射到数据模型,确保数据质量;特别实现了文档切片与模板变量的智能组合,有效支持从长文档生成结构化QA数据集,形成了一套完整的提示词模板应用与数据集生成解决方案。