Obsidian 插件:Topic Linking
插件名片
概述
将 PDF 文件和网页链接转换为 Markdown,并从 Markdown 创建主题
原文出处
下面自述文件的来源于 Readme
Readme(翻译)
下面是 obsidian-topic-linking 插件的自述翻译
Obsidian 主题链接插件
这是一个插件,提供了几个命令,用于在参考上下文中处理 PDF 和 Web 内容。
**注意:**此插件是高度实验性的,可能会对现有的 vault 产生意想不到的后果。
请谨慎使用,并在后果不会破坏的测试 vault 中使用。
示例工作流程
该插件旨在帮助研究中常见的任务。研究人员通常会建立大量的 PDF 和链接存储库,这些存储库不容易通过单个文件夹或标记系统进行组织。
场景 1
一位研究人员在 Obsidian 保险库的各个文件夹中有一系列的 PDF 文件。他们希望将这些 PDF 文件转换为 Markdown 格式,以便更容易进行搜索。
提取 PDF 内容命令将在一个指定的文件夹中生成一组 Markdown 文件(默认为 Generated/ 文件夹)。
情景 2
一位研究人员拥有一个庞大的 Zotero 数据库。他们希望为每个条目生成一系列的笔记,并生成一个可读的参考文献。
生成参考文献将生成一组包含元数据和可读的参考文献的笔记,类似于 Zotero 在 MS Word 中生成的内容。
请注意,BibNotes 提供了一个更加扩展的功能,推荐在需要对笔记输出进行控制的情况下使用。之所以在这里包含这个功能,是为了生成可读的参考文献版本。
场景 3
一位研究人员在他们的保险库中有一些 PDF 文件和网页书签的存档,这些 PDF 文件和链接涵盖了各种主题或话题。研究人员希望发现它们之间的共同主题。这些主题将被存储在一系列的笔记中,并附带指向源文件的链接。
研究人员将他们的 PDF 文件存储在名为“PDFs”的保险库文件夹中,将网页书签存储在名为“Bookmarks”的文件夹中。
- 运行“提取 PDF 内容”和“提取网页链接”命令,生成一系列 Markdown 文件存储在“Generated/”文件夹中。
- 生成的文件中有一些文件名中包含“Data”一词,这是一个感兴趣的通用主题。将“主题文件模式”设置字段设置为“Generated/Data”(使用glob样式模式)。
- 这些文件中有一些是书籍,包含超过 50,000 个单词。还有大量符合此模式的文件(约 100 个)。将“固定单词数”设置字段设置为 1,000,以确保主题映射和链接在合理的时间内执行。还将“随机化文本”字段设置为 true,以便经常忽略包含版权和目录的前言部分。
- 然后执行“链接主题”命令,生成 10 个主题文件,将相关关键词和相关文档进行映射。一个“主题索引”文件将所有文件链接在一起,并包含一个方便的检查列表,列出所有符合文件模式的文档,可用于标记已阅读或引用的文档。
他们首先运行:
- “提取 PDF 内容”命令,为他们的 PDF 文件生成 Markdown 文件。
- “提取网页链接 - 生成内容”命令,从书签中引用的网页内容生成 Markdown 文件。
这将在“Generated/”文件夹中生成一系列 Markdown 文件。研究人员注意到一些生成的文件名中包含“Data”一词,并认为这些文件可能包含感兴趣的主题。
他们返回到插件设置中,将“主题文件模式”设置字段设置为“Generated/Data”(使用glob样式模式)。
然后他们运行:
- “链接主题”命令,生成一组链接的主题笔记。
场景 4
继续上一篇场景 3,这位研究人员还想包括元数据、注释和可读的参考文献。他们有一个安装了 Zotfile 和 Better BibTex 插件的 Zotero 数据库。
他们首先使用 “Better Bibtex JSON” 和 “Better CSL JSON” 格式导出他们的数据库。这两种格式都很重要,因为不幸的是它们包含的信息不同。研究人员将两个导出文件都保存在他们的存储库根目录下,并在Topic Linking插件设置中指定这两个位置:
Better Bibtex 文件: TopicLinking_bibtex.json
Better CSL 文件: TopicLinking_csl.json
场景 5
与场景 3类似,但这次研究人员正在处理一些包含超过 50K 个单词的书籍。还有大量符合此模式的文件(约 100 个)。
在运行链接主题命令之前,研究人员设置了以下内容:
固定单词数设置字段为1,000,以确保主题映射和链接在合理的时间内执行。
随机化文本字段设置为true,以便经常忽略前言(包含版权和目录)。
通用设置
每个命令都需要指定输入和输出的文件夹。关键设置及其默认文件夹如下:
生成的文件:提取 PDF 内容命令的默认输出文件夹。默认为 ‘Generated/‘。
PDF 文件:PDF 文件的存储库(可以包含嵌套文件夹)。默认为 ‘PDFs/‘。
书签文件:从浏览器导出的书签的存储库。默认为 ‘Bookmarks/‘。
主题文件:链接主题命令的默认输出文件夹。默认为 ‘Topics’。
注意:在运行任务之前,应先创建这些文件夹。
制作参考文献
待定。
提取 PDF 内容
提取 PDF 内容命令使用Obsidian内置的 PDF 解析器将存储库中的 PDF 文件转换为 Markdown 格式。转换过程非常简化和近似,以产生用于主题链接命令的文本流。但是结果仍然可以被人类阅读。该命令有四个选项:
- PDF 文件:指定要处理的 PDF 文件的位置
- 覆盖 PDF 生成的内容:是否覆盖同名的现有 Markdown 文件
- 限制文件数量:要处理的文件的最大数量(如果不设置此选项,可能会导致Obsidian在处理大型存储库时内存不足)
- 限制文件大小:要处理的文件的最大大小。’ 文件 ’ 的含义(PDF 源文件还是生成的 Markdown 文件)取决于是否设置了如果大小超过限制,则拆分文件选项。
- 如果大小超过限制,则拆分文件:如果设置了限制文件大小,并且可能会生成大于此大小的 Markdown 文件,则该命令将尝试将生成的文本拆分为多个较小的文件。
实验设置
还有一些额外的“实验”设置可以进行一些自定义:
- 将页面作为标题插入:将第 X 页标题插入生成的 Markdown 中。这对于链接到特定页面非常有用。
- 提取批注:从 PDF 中提取批注作为高亮显示。
- 将批注与评论一起插入:将附加到提取的批注的任何评论作为尾注包含在内。
- 更好的 Bibtex 文件:这是从 BibNotes 复制的功能。如果在此处指定了有效的 Zotero 导出(以 Better BibTex JSON 格式)文件位置,则在生成的 Markdown 中将包含 Zotero 元数据。
- 更好的 CSL 文件:这是一个单独的设置,确保可以从各种命令生成可读的参考文献。
提取网页链接生成的内容
提取网页链接生成的内容 命令会扫描一个文件夹(默认名为 书签)中的 Markdown 文件,提取其中以 http(s):// 开头的网页链接。它有两个参数:
- 书签文件:指定包含链接的文件所在位置
- 覆盖网页链接:是否覆盖同名的已生成 Markdown 文件
Link Topics 命令
Link Topics 命令使用 stdlib 实现的 LDA(潜在狄利克雷分配)来扫描 Markdown 文本中的常见主题和关键词。它将生成一个文件夹(默认为 Topics),其中包含一个索引和一系列链接到相关主题文档的单独文件。
插件的核心命令是 Link Topics。它使用一个模式设置 Topic File Pattern 来扫描 Markdown 文件中的主题。还有一些其他设置条件来决定如何扫描这些文件,如何训练 LDA 模型以及如何格式化模型的结果。以下是该命令的一般参数:
- Number of topics:生成的主题数量
- Number of words:每个主题包含的单词数量
- Stemming:是否对扫描到的标记进行词干处理(例如,‘capital’ 变为 ‘capit’)
- Topic threshold:文档必须具有的与给定主题相关的概率(介于 0 和 1 之间)
有三个参数与包含在主题模型中的 Markdown 文件内容有关:
- Topic file pattern:用于定位文件的 glob 样式模式
- Topic search pattern:一个非空字符串,根据是否包含搜索词来进一步过滤文件
- Topic tag pattern:一个非空标签,根据是否包含其中一个以空格分隔的标签(例如,‘#fashion’)来进一步过滤文件
其他参数条件决定了如何对 Markdown 文件进行抽样:
- Fixed number of words:仅选择每个 Markdown 文件的子集,基于固定数量的单词
- Percentage of total text:仅选择每个 Markdown 文件的子集,基于文件文本的百分比(如果 Fixed Number of Words 有非零值,则被覆盖)
- Randomise text:如果选择了 Fixed Number of Words 或 Percentage of Total Text,则随机确定这些样本是否随机抽取
Topic 文件夹可以包含文件模式和当前时间戳中的一个或两个:
- Include pattern in topic folder
- Include timestamp in topic folder
最后,LDA 模型的训练参数可以进行调整,如 stdlib lda 文档 中所述:
- LDA iterations:训练迭代次数
- LDA burn in:初始丢弃的候选数
- LDA thin:每次迭代丢弃的候选数
致谢
本代码包含Citeproc-plus库的修改版本。
源代码: https://github.com/fiduswriter/citeproc-plus
版权: Johannes Wilm
许可证: https://raw.githubusercontent.com/fiduswriter/citeproc-plus/master/LICENSE
Citeproc-plus又包含citeproc-js和 Citation Style Langage CSL 项目。
Citeproc-js 许可证: https://raw.githubusercontent.com/Juris-M/citeproc-js/master/LICENSE
Citation Style Langage 样式: https://github.com/citation-style-language/styles
Citation Style Langage 本地化: https://github.com/citation-style-language/locales
额外样式许可证: https://raw.githubusercontent.com/fiduswriter/citeproc-plus/master/extra_style_licenses.txt
Github 链接
请参阅https://github.com/liammagee/obsidian-topic-linking-plugin
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。