jieba.el icon indicating copy to clipboard operation
jieba.el copied to clipboard

在Emacs中使用jieba中文分词

#+TITLE: Jieba.el -- 在Emacs中使用jieba中文分词

  • 简介

众所周知, Emacs并没有内置中文分词系统, 以至于 =forward-word= 和 =backward-word= 以及 =kill-word= 等以单词为单位的操作只能粗暴的标点符号进行确定所谓"词汇", (其实是中文里的句子).

=jieba.el= 利用[[https://github.com/yanyiwu/nodejieba][nodejieba]]对buffer中的中文句子进行分割, 并且增强了上述以词为单位的 操作, 使使用Emacs处理中文文本的体验更加流畅.

注: 该图片文字来源于[[https://zh.wikipedia.org/zh-cn/GNU%25E9%2580%259A%25E7%2594%25A8%25E5%2585%25AC%25E5%2585%25B1%25E8%25AE%25B8%25E5%258F%25AF%25E8%25AF%2581][维基百科]], 遵循CC BY-SA 3.0条款使用

[[file:screenshot.gif]]

  • 安装方式

** 安装nodejieba 执行以下命令安装nodejieba

#+BEGIN_SRC sh npm install #+END_SRC

** 安装jieba.el

从[[https://elpa.gnu.org/packages/][GNU ELPA]]安装jieba.el的依赖[[https://elpa.gnu.org/packages/jsonrpc.html][jsonrpc]], 然后将jieba.el放入你emacs的 =load-path= 中, 在 =.emacs= 文件中写入

#+BEGIN_SRC elisp (require 'jieba) (jieba-mode) #+END_SRC

你也可以使用 =use-package=

#+BEGIN_SRC elisp (use-package jieba :load-path "/path/to/jieba" :commands jieba-mode :init (jieba-mode)) #+END_SRC

  • 使用方式

启用 =jieba-mode= 后, =jieba.el= 会自动重新映射 =forward-word=, =backward-word=, =kill-word=, =backward-kill-word=, 到对应的jieba增强版本上.

你也可以自行定义 =jieba-mode-map= 来修改这些操作的按键绑定

| 按键名 | Action | |----------------------------+--------------------------| | =jieba-forward-word= | 向前移动一个中英文单词 | | =jibea-bacward-word= | 向后移动一个中英文单词 | | =jieba-kill-word= | 删除光标后的一个中文单词 | | =jieba-backward-kill-word= | 删除光标前的一个中文单词 | | =jieba-mark-word= | 选中光标下的一个中文单词 |

  • 协助开发

欢迎提交PR和Issue report.

  • 相关项目
  • [[https://github.com/xuchunyang/chinese-word-at-point.el][chinese-word-at-point.el]] :: 另一个使用jieba分词进行中文分词的package.
  • [[https://github.com/tumashu/pyim][pyim]] :: 一个Emacs内部的中文输入法, 提供了按其输入词库进行分词的功能.