惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
IT之家
IT之家
博客园_首页
博客园 - 【当耐特】
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
GbyAI
GbyAI
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
H
Help Net Security
T
Tailwind CSS Blog
B
Blog RSS Feed
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
博客园 - 叶小钗
雷峰网
雷峰网
量子位

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
DEVONthink To Go 中文搜索现状讨论 - 少数派
2018-05-23 · via 少数派

DVONthink To Go 和 DVONthink Pro 一样,搜索中文时存在水土不服的现象,尽管几年前就有系统内置的可以用于分词的接口 tokenizer(Pin 就是利用这个接口的范例),DEVONthink 系列产品仍然没有使用这些接口来强化其软件的索引能力。按理说,增加对文本进行一步处理很容易。我以前没写过 macOS 的应用程序,下载 Xcode,用了几天时间也写出来一个能用的 demo。GitHub 上相关的开源项目也不是不存在:lancy/StringTokenizer: iOS & Mac 分词(支持中文)

我曾试着写 Mac 上的脚本来生成索引,最后却发现大量的索引词把自己的文件搞得乱糟糟的,更何况在 iOS 设备上,没法部署我写的脚本,所以我仔细看了 DEVONthink 官方的说明文档,将其中的基础概念翻译了出来,有了此文。

关于翻译和简称

在不引起歧义的情况下,有如下简称:

  • DEVONthink To Go:DTTG
  • DEVONthink Mac 系列软件:DT
  • 称存储于 DTTG 中的任意(一个/多个)(文件/文件夹)为 项目

涉及到的若干名词,优先参照机器之心的编译表

分词简介

中文这样的非字母语言,其自然语言处理和英语这样的字母语言处理起来有不同之处。首先就是分词和词性标注,分词简单说是把句子中的词分开,不同的情况,还要考虑召回率、长词优先等策,词性标注顾名思义是标记词的词性。

分词没做好的会在语义上出现问题,就像果壳上的这个帖子。现代的分词技术已经取得了非常大的进步,但要解决的问题没有变,感兴趣的看以下两篇论文做些了解

当然,现在已经有不少成熟的包库能高效完成分词并标注这个工作了:

下面进入正题。

词组,字符与查询

原文是 WORDS, TOKENS, AND QURIES,直接翻译是词,字,与查询。但如上文说,中文和英语的处理逻辑存在不同,

  • 词组:由空格或标点字符分隔的字符串
  • 符号:DTTG 把全文索引存储为一个符号表。通常一个符号等同于一个词组
  • 短语:由 + 或者 " 包起来的符号
  • 查询:一个或多个符号通过逻辑操作符组合起来的

非字母,非数字的字符会被分割成一个短语。1234/5678 技术上会被处理为 1234 5678

大小写

符号是大小写敏感的;逻辑操作符必须是全部大小的。符号当然可以是大写,但是 DTTG 内部会将其大小写忽略的

大小写对于中文来说不那么重要

通配符

在 Mac 上,使用 DT 查询中文时,免不了使用 * 这样的符号来分隔查询的中文词语

DTTG 中默认是全匹配词组的(匹配由空格和标点字符分开的字符串,一般是一句话),而不是汉语中的一个词。在一个符号后接*,就能匹配所有以这个词开头的。但是和 Mac 上不一样的是,* 只能用来匹配前缀。比如

  • tDEVON 这个词,用 devon*devondevon**devon*无法匹配处理啊
  • 换到中文语境下,汉朝时苏武出访匈奴这句话,用*苏武苏武**苏武*无法搜索出这句话的

那什么时候是有用的呢:

  • DEVONthink TechnologyDEVONsearchDEVON*/devon* 可以搜索出来。
  • 大明苏武的内亚奇行记大明* 可以搜索出来

也就是说,对于中文而言,如果记得句子开头的中文词/字,这个方法才用得上

限定搜索范围

DTTG 中的项目,有着丰富的属性,称为作用域:

  • name:项目的名称
  • comment:项目的注释
  • content:项目的内容
  • tags:项目的标签

利用这些属性,可以逐步限定搜索范围,当它们和冒号 : 组合在一起时,便成为作用域前缀:

  • name: 仅在项目的名称中检索
  • comment: 仅在项目的注释中检索
  • content: 仅在项目中检索
  • tags: 仅在标签中检索

逻辑操作符

数学,或者编程中,或多或少会接触一些与集合论、逻辑相关的,比如并集,交集之类的。逻辑操作符就是在搜索中常用的,表明相邻两个查询指令间的逻辑关系

逻辑操作符只能是大写的。如果在搜索中没有说明使用的逻辑操作符,DTTG 默认是 AND

更进一步的使用还请参见文档

DTTG 中文搜索现状

就当下而言,简单如搜索 汉朝时苏武出访匈奴 这句话中的 苏武 一词都是不可行的,可以说非常悲观了。

所以,面对半残废的搜索,DTTG 中要想打造一套以中文为主的知识管理系统,最重要的就是不依赖于搜索。现阶段我是采用纯手工整理,用 itemlink 来链接有关系的文档。Mac 看情况用我自己的脚本来生成关键词,以备未来的检索

还是有点怀念用 Evernote 时强悍的中文索引能力的~