用 Python 3 部分解决 Devonthink 中文搜索问题

这是我利用结巴分词做的一个程序,很简单。需要安装 Python 3

  1. Python 3.x 2. 结巴分词 : pip3 install jieba 3. pyperclip : pip3 install pyperclip

使用起来很简单,运行 get_key_words.py 就行,

比如这份代码在你的下载目录,终端里输入 python3 /Users/[你的用户名]/Downloads/get_key_words.py

为了方便使用,你可以在一些效率类工具中创建快速打开的方式。我因为一直开着 Coderunner,暂时没有这方面需求,欢迎会的人分享


Devonthink 中文索引生成程序说明

用法

  1. 复制笔记内容(有图片,英文,等都可以,反正会被过滤掉)
  2. 运行程序
  3. 在相应笔记的 Spotlight Comments 处粘贴剪贴板内容(可以通过 Command+Shift+I 打开)

依赖

  1. Python 3.x 2. 结巴分词 : pip3 install jieba 3. pyperclip : pip3 install pyperclip

可选:根据个人需求而定,一般不用,详情见代码
thulac : pip install thulac

关于 Python 2.x 的说明:

由于 macOS 的二进制保护限制,直接使用 pip 指定安装模块是不会成功的,所以我没有采用 2.x ,而是采用我能随意使用的 3.x。
代码(稍作修改?)应该可以在 2.x 下运行,并且 2.x 下的代码有 Alfred 的直接支持, Alfred 在 macOS 有系统集成 3.x 之前不考虑支持 3.x ,我也没办法。

函数说明

  • filter_chinese 对输入的字符串,除掉英文字母,数字,空格,换行
  • copy_to_clipboard:keywords 实际上是一个数组,所以输出的的格式应当调整成 Spotlight Comments 的格式,如 采用, 二进制, ......
  • cut :分词。这个⊂个人需求。比如一段文本,容易一起歧义的词汇较多,这时就需要用比较精准的分词方式先把词会分好,再提取关键词。不同的分词方式处理出的结果是不一样的。

  • filter_keywords:对结巴分词提取出来的关键词进行过滤
  • get_key_words:在这个函数里调用上述函数并传递变量

Alfred Workflow

导入后需要讲 Terminal Command 中的 get_key_words.py 的路径改为你所使用的路径。
快捷键是 Command+Shift+D ,可以自行修改。
没有购买 Alfred PowerPack 的,可以把 Terminal Command 中的代码添加为文本替换。

python3 /Users/[username]/Downloads/get_key_words.py

osascript -e 'tell app "Terminal" to close front window'

2017-05-02 更新

这次更新的 Workflow 更加强大:可以利用 Apple Script 读取打开的笔记内容啦

  1. 你只需要手动打开笔记
  2. 激活快捷键
  3. 等程序运行完毕,
  4. 进入 Info 界面,
  5. 将关键词拷贝进去。

脚本会提取出文本拷贝到剪贴板,然后 python 程序进行提取关键词,并将关键词按指定格式拷贝到剪贴板。

待完成

  1. 代码中的 TODO 部分
  2. 发布到 pip 中方便使用
Comments
Write a Comment