Open morning0801 opened 2 weeks ago
目前看到了history_sentence_window.py脚本中的处理方式,准备尝试复刻
这段代码定义了一个名为 HistorySentenceWindowNodeParser
的类,它继承自 NodeParser
,用于解析文档中的节点。让我来解释它的工作原理和标题提取的过程:
类的结构:
sentence_splitter
(用于拆分文本的方法)、window_size
(窗口大小,即每个句子周围要捕获的句子数)、window_metadata_key
和 original_text_metadata_key
等(用于存储窗口句子和原始文本的元数据键)。class_name()
用于返回类名、book_name()
用于根据文件名映射到书名、from_defaults()
用于根据默认值创建类实例等。标题提取:
TitleLocalizer
类负责从文本中提取标题。analyze_titles()
方法接收文本作为输入,按行划分文本,并识别包含特定字符(如 "纪" 和 "传")的行作为标题。build_window_nodes_from_documents()
方法使用 analyze_titles()
提取的标题,将文本分割成行,并为每行构建节点。节点构建和元数据处理:
build_window_nodes_from_documents()
中,每行文本被拆分成句子,并构建成节点(BaseNode
)。window_size
,获取周围若干个句子,将它们作为窗口文本存储在节点的元数据中。总体而言,这个类的作用是将文本分解成节点,并为每个节点附加上下文窗口和其他元数据,同时通过 TitleLocalizer
辅助提取和处理文本中的标题信息,用于后续的分析或处理过程。
Milvus模式下怎么使用自己的文档作为知识库,才能返回正确的《书名》和出处?是否需要在build前对文本格式做一定的处理?我直接build了一个本地的txt文件,但返回结果时”《》“中的内容并不是小标题而是很长的一段内容文本。