Justin

Command Palette

Search for a command to run...

返回作品典藏庫
已完成2026information-system

CNIRS 中文新聞智能檢索系統

可查詢、可解釋、可評估的中文新聞 Search Engine Demo。

CNIRS 是一個以 Flask、Python 與傳統資訊檢索方法打造的中文新聞檢索系統。它整合 BM25、TF-IDF、Boolean、Hybrid、LM、BIM、WAND、MaxScore、CSoundex、Query Expansion、Clustering、Summarization、Ranking Diagnostics、Evaluation Dashboard 與 Feedback/LTR sandbox,並透過 dothost live demo 與 GitHub Pages 作品頁展示完整 Search Engine Demo。

已驗證 Demo 錄影 1

由 portfolio quality pass 從既有專案 demo 素材複製。

54 張截圖4 支 Demo 影片

媒體總覽

快速瀏覽這個專案的截圖與錄影展示。

專案連結與 Demo 狀態

專案概覽

這個作品最重要的重點不是單一演算法,而是把一組資訊檢索模組整理成真正可以操作、可以截圖、可以錄影的 Search Engine Demo。 使用者可以從主搜尋頁輸入中文新聞 query,選擇 BM25、TF-IDF、Hybrid、Boolean、LM、BIM、WAND 或 MaxScore 等模型,並搭配來源、主題分類、日期、tags、publisher 等 facets 即時縮小結果。Facet 也可以在沒有 query 的情況下直接瀏覽所有對應文章,這讓系統不只是 search box,也像一個新聞資料探索工具。 每筆搜尋結果都會呈現標題、摘要片段、highlight、score、metadata 與 explanation。使用者可以打開 Why this result 面板檢查 matched terms、component scores、field boost 與 ranking signals,也可以打開文章 detail modal 查看 summary、KWIC、keywords、related news、taxonomy 與完整 metadata。 為了讓作品更像完整 IR 系統,我另外做了 Model Comparison、Evaluation Dashboard、Ranking Diagnostics、Feedback Analytics 與 Analysis Graph。這些頁面讓使用者可以看到同一個 query 在不同模型下的排序差異、demo qrels 指標、BM25/TF-IDF/LM 分數拆解、click/relevance feedback 統計,以及從 query 到 ranking results 的節點式流程圖。 公開展示分成兩層:GitHub Pages 作品頁直接顯示完整 demo 截圖與錄影;真正可互動的 Flask 搜尋系統則放在 `https://neojustin.dothost.net/projects/information-retrieval/`,並可透過 `/api/stats` 驗證遠端語料、索引與模型狀態。

我的角色

獨立開發者 / IR 系統架構與全端實作

問題背景

原本專案比較接近課堂型 IR demo,雖然有許多演算法模組,但缺少穩定 Web App、統一 API、可展示 UI、可解釋結果、真實新聞資料與完整操作流程。

解決方案

我把核心 IR 模組整理成 Flask service layer,建立統一搜尋 API、facet browsing、document detail、model comparison、evaluation、diagnostics、feedback analytics 與 analysis graph,並用 Playwright 產生完整導覽截圖與錄影,再接到 dothost 動態 demo 與 GitHub Pages 靜態作品頁。

目前成果

完成一個可以公開展示的中文新聞檢索系統:live demo 可查詢遠端新聞語料與 API stats,作品頁則整合 cover、截圖、WebM 錄影、技術說明與面試導覽。

作品亮點

  • 支援 BM25、TF-IDF、Boolean、Hybrid、LM、BIM、WAND、MaxScore、Fuzzy、CSoundex 等多種 IR 方法。
  • 可直接點選 facets 瀏覽所有符合 metadata 的新聞,不需要輸入 query。
  • 每筆結果提供 snippet、highlight、component scores、field boost 與 Why this result explanation。
  • Document detail 整合 summary、KWIC、keywords、taxonomy、related news 與 metadata facets。
  • Model Comparison、Evaluation、Ranking Diagnostics、Feedback Analytics 與 Analysis Graph 都有視覺化頁面。

技術挑戰

  • 需要把原本分散的研究型 IR modules 接成一致、可測、可展示的 service API。
  • 中文新聞需要處理斷詞、正規化、metadata 清理、taxonomy 與 facet 品質。
  • 低資源部署環境不能 eager-load CKIP/BERT 等重型模型,因此需要 optional dependency fallback。
  • GitHub Pages 是靜態站,不能直接跑 Flask,所以 portfolio 頁用影片、截圖與 dothost live demo 連結呈現完整效果。

目標使用者

  • 作品集審閱者與面試官
  • 需要快速理解專案目的、技術棧與成熟度的技術讀者

技術亮點

  • 偵測到的主要技術線索:Python, Flask, JavaScript, Bootstrap, Jieba, BM25, TF-IDF, Boolean Retrieval, Language Model Retrieval, SQLite, Chart.js, Playwright, pytest
  • 已有 README 作為後續補齊案例研究的依據
  • 已連接公開 GitHub repository,可從作品集追溯原始碼

系統架構

此專案目前由 portfolio catalog pipeline 依 README、Git metadata、package/build 設定與素材線索建立案例頁。正式架構說明仍需依實際 source code 補齊;目前可確認的技術線索包含:Python, Flask, JavaScript, Bootstrap, Jieba, BM25, TF-IDF, Boolean Retrieval, Language Model Retrieval, SQLite, Chart.js, Playwright, pytest。

資料流程

目前尚未完成可公開的資料流程說明。若此專案含資料處理、AI pipeline 或後端 API,後續應補上 input、processing、storage、UI/output 的端到端流程。

專案結構

information-retrieval/
  README.md              # project documentation, when available
  source files           # implementation reviewed by local audit
  package/build config   # detected capability signals

安裝與執行

This project does not expose a verified runnable web command yet. Review the README/source tree and add exact install, run, test, and build commands before interview use.
No verified build command was detected. Treat the current portfolio page as a case-study placeholder until build steps are reviewed.

後續改進

  • 補齊正式 README、截圖與 demo recording
  • 補上架構圖、資料流程與關鍵技術決策
  • 確認 build/test 狀態並更新 portfolio release report

面試說明重點

  • 先說明此專案目前的成熟度與可展示範圍
  • 聚焦在可驗證的技術棧、程式結構與已完成部分
  • 不要宣稱尚未部署、尚未錄影或尚未測試的能力已完成

後續規劃

  • 持續擴充 qrels 與人工 relevance labels,讓 evaluation 更接近正式 benchmark。
  • 將 feedback dataset 擴充到真正 learning-to-rank 實驗。
  • 把 semantic retrieval 作為 optional production profile,而不是預設啟動。

相關作品