付費限定

從零開始建置支援中日韓語言的 Carrot2 v4.x 發行版本

更新 發佈閱讀 17 分鐘
(圖片來源:使用 AI 技術生成)

(圖片來源:使用 AI 技術生成)

前言:為什麼我們需要從原始碼編譯?

如果你曾用過 Carrot2,可能會發現官方提供的二進位(Binary)版本對中文使用者並不友善。這並非功能不足,而是官方發行版為了保持輕量,預設僅打包了通用語系。主要原因有幾點:

  1. 官方版本語系限制:預設僅內建歐美語系(英、法、德等),對於需要分詞器(Tokenizer)支援的 CJK(中日韓)模組,必須透過編譯流程手動連結相關的 Lucene 分析組件。
  2. Web UI 語言選單問題:Carrot2 的前端 Workbench 介面語言清單是「寫死」在程式碼中的。即便後端支援了中文,選單裡若找不到選項,使用者也無法強制發送中文處理請求。
  3. CSV 檔案解析錯誤:官方使用的 SheetJS (XLSX) 解析邏輯在處理純文字 CSV 時,對於 UTF-8 編碼且不含 BOM 的 CJK 內容常會判定失誤,導致上傳後的預覽與分群結果出現亂碼,這必須從前端原始碼層級修正檔案讀取流。
  4. 自定義字典需求:中文分詞往往需要精細的過濾,例如排除「新聞」、「轉發」等雜質標籤。從原始碼編譯可以讓你將這些專屬的停用詞(Stopwords)直接內建到 Distribution 中,實現隨開即用的專業分析環境。

上一篇教學中,我介紹了手動補元 JAR 模組與插入 JS 補丁的「快速修補」方法。雖然這對非開發者較易上手,但存在版本更新時需重複配置的局限。為了打造穩定且完美結合的中日韓語言支援版本,本篇將引導你從「原始碼層級」進行深度改寫與編譯。

自行編譯的好處:

  • 一勞永逸:一次處理好編譯邏輯,未來升級版本只需合併代碼即可快速產出新版。
  • 完整封裝:將 CJK 語言模組與前端介面修正打包成單一 ZIP,部署時無需解壓縮即可用。
  • 效能優化:可預先在原始碼中調整演算法的預設參數(如字群密度、標籤加權)。
  • 標準化環境:完全支援 DevContainer,確保跨平台開發環境的一致性。

開發環境準備(推薦使用 DevContainer)

為了避免不同作業系統之間的 Java 版本、Gradle 環境或路徑問題搞死人,我強烈建議使用 VS Code 的 DevContainer,這能提供一個乾淨且預設配置好的 Linux 編譯環境。

方案一:DevContainer(VS Code 一鍵環境)

在專案目錄下建立 .devcontainer/devcontainer.json

{
"name": "Carrot2 CJK Build Environment",
"image": "mcr.microsoft.com/devcontainers/java:1-21-bullseye",

"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "none",
"installMaven": "true",
"installGradle": "true"
},
"ghcr.io/devcontainers/features/git:1": {}
},

"forwardPorts": [8080],

"postCreateCommand": "git config --global core.autocrlf false",

"customizations": {
"vscode": {
"extensions": [
"vscjava.vscode-java-pack",
"ms-vscode.vscode-gradle",
"esbenp.prettier-vscode"
]
}
}
}

操作方式

  1. git clone https://github.com/carrot2/carrot2.git
  2. cd carrot2
  3. code .
  4. 當 VS Code 偵測到設定檔時,點擊右下角提示的「在容器中重新開啟 (Reopen in Container)」。

方案二:本地環境直接安裝(macOS/Linux)

如果你偏好直接在機器上跑,請確保工具鏈版本正確:

  1. 安裝 Java 21+:Carrot2 v4 需要較新版的 JDK。建議使用 SDKMAN 管理:sdkman use java 21.0.4-tem
  2. 準備 Gradle:專案根目錄下有 ./gradlew 腳本,它會自動下載對應的 Gradle 版本,無需手動安裝系統級別的 Gradle。
  3. 下載原始碼與子模組
    由於 Carrot2 依賴一些外部組件,必須使用遞迴下載:
    git clone --recurse-submodules https://github.com/carrot2/carrot2.git
    cd carrot2

接下來,我們將進入核心實作階段。本節將詳細說明如何修改程式碼與執行編譯之步驟,請訂閱解鎖全文,取得完整技術細節。

核心修改一:啟用 CJK 語言模組

Carrot2 的 DCS (Document Clustering Server) 是透過 Gradle 進行模組化建置的。預設的依賴配置排除了 CJK 相關的 Lucene 庫,我們需要手動將其加入編譯依賴鏈。

以行動支持創作者!付費即可解鎖
本篇內容共 6644 字、0 則留言,僅發佈於電腦達人你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
Chris Fung 的沙龍
10會員
30內容數
正在搬家至方格子中... 🔄 📝 集中分享提升生產力、自動化至開發等技能 🐱‍💻📈 📢 歡迎訂閱・留言回應,共享交流啟發性話題 👍
Chris Fung 的沙龍的其他內容
2026/02/19
如果你正在處理大量的搜尋結果或文件,想透過 Carrot2 進行自動分類(Clustering),你可能會發現它預設對中文、日文、韓文(合稱 CJK)的支援相當有限。雖然這款聚類引擎在國際上享有盛名,但對於亞洲用戶來說,「開箱即用」的體驗往往會卡在語言障礙上。 這並非因為 Carrot2 技術上做
Thumbnail
2026/02/19
如果你正在處理大量的搜尋結果或文件,想透過 Carrot2 進行自動分類(Clustering),你可能會發現它預設對中文、日文、韓文(合稱 CJK)的支援相當有限。雖然這款聚類引擎在國際上享有盛名,但對於亞洲用戶來說,「開箱即用」的體驗往往會卡在語言障礙上。 這並非因為 Carrot2 技術上做
Thumbnail
2025/12/31
Instapaper 的「稍後閱讀」文章難以整理?開源工具 Instapaper Scraper 讓你輕鬆將書籤匯出成 CSV、JSON 或 SQLite 格式,支援可點擊連結,提升使用體驗與效能。適合資料分析、筆記軟體匯入、知識備份的使用者。立即體驗,一同優化知識管理!
Thumbnail
2025/12/31
Instapaper 的「稍後閱讀」文章難以整理?開源工具 Instapaper Scraper 讓你輕鬆將書籤匯出成 CSV、JSON 或 SQLite 格式,支援可點擊連結,提升使用體驗與效能。適合資料分析、筆記軟體匯入、知識備份的使用者。立即體驗,一同優化知識管理!
Thumbnail
2025/11/21
介紹了 n8n-stack 專案,一個讓使用者能透過 Docker 或 Podman 輕鬆、安全且快速地自架 n8n。此方案整合了 Traefik 反向代理與 Cloudflare Zero Trust 安全防護,省去了複雜的網路設定,讓使用者能完全掌控自己的 n8n 環境,專注於建構自動化流程。
Thumbnail
2025/11/21
介紹了 n8n-stack 專案,一個讓使用者能透過 Docker 或 Podman 輕鬆、安全且快速地自架 n8n。此方案整合了 Traefik 反向代理與 Cloudflare Zero Trust 安全防護,省去了複雜的網路設定,讓使用者能完全掌控自己的 n8n 環境,專注於建構自動化流程。
Thumbnail
看更多
你可能也想看
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
本文詳細闡述如何運用 AI 工具,以結構化的對話方式,快速完成備課流程。作者分享了從角色設定、素材整理、文本與影片深度訊息萃取、比較閱讀設計,到評量標準建立的六個關鍵步驟。更進一步,透過模擬學生和批判性審查來驗證教案,並探討如何將 AI 轉化為學生的差異化學習教練。
Thumbnail
本文詳細闡述如何運用 AI 工具,以結構化的對話方式,快速完成備課流程。作者分享了從角色設定、素材整理、文本與影片深度訊息萃取、比較閱讀設計,到評量標準建立的六個關鍵步驟。更進一步,透過模擬學生和批判性審查來驗證教案,並探討如何將 AI 轉化為學生的差異化學習教練。
Thumbnail
「第一次十字軍」聽起來像是一支遠征軍,實際上,他們至少是由五股湊在一起的貴族部隊組合而成的。 撇除失敗的平民十字軍,主要有: 來自義大利南部、由塔蘭托的波西蒙德領軍的諾曼征服者。 法國南部,以普羅旺斯等地為主的貴族軍團,領袖是土魯斯的雷蒙四世。 下洛林公爵,在法國與日耳曼邊境的戈佛雷所領
Thumbnail
「第一次十字軍」聽起來像是一支遠征軍,實際上,他們至少是由五股湊在一起的貴族部隊組合而成的。 撇除失敗的平民十字軍,主要有: 來自義大利南部、由塔蘭托的波西蒙德領軍的諾曼征服者。 法國南部,以普羅旺斯等地為主的貴族軍團,領袖是土魯斯的雷蒙四世。 下洛林公爵,在法國與日耳曼邊境的戈佛雷所領
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News