cofacts / rumors-api

GraphQL API server for clients like rumors-site and rumors-line-bot
https://api.cofacts.tw
MIT License
111 stars 26 forks source link

標記文章關鍵字分類,可以 search by label #32

Closed MrOrz closed 4 years ago

MrOrz commented 7 years ago

3/18 聚會中,維基社群以及阿孝老師都曾經建議要讓不同知識領域的人可以分工回應文章。實作 user generated label 似乎是一個不錯的方式。

RFC:在 rumors-api 實作一個類似 hackpad / niconico 的 label,符合:

  1. 使用者可以自由對 article 標記 label
  2. 輸入 label 時會會用現有 label 進行 autocomplete
  3. 可以列出含有特定 label 的文章

因為一開始一定沒啥標籤,我覺得可以之後再來討論 label 太多是否要合併之類的事情。立委投票指南的「議題」 似乎也是類似的實作方式。

實作方式為直接在 articles 開一個 field 存放 array of text,不另外開 index。

MrOrz commented 7 years ago

list of tag 可用 terms aggregation https://dotcms.com/docs/latest/elasticsearch-examples#TagCloud

discussions: https://g0v-tw.slack.com/archives/rumors/p1490021878396426

MrOrz commented 7 years ago

提過需求的地方

MrOrz commented 6 years ago

提議實做方式

https://g0v-tw.slackarchive.io/cofacts/page-13/ts-1502597554861991

對於 tag 我的想像是:

  1. 我們可以讓編輯將現有的 tag 加入任何 article。
  2. 要新增 tag 的話,可以有個建立 tag 精靈幫助使用者標記「屬於這個 tag 的文章」與「不屬於這個 tag 的文章」。
  3. 有了 2,對於每個 tag 我們都有 positive sample 與 negative sample,因此每個 tag 我們都可以 train 一個 classifier 判斷一篇文章是否屬於這個 tag。
  4. 編輯讀文章的時候,可以建議編輯加 tag。編輯可以選擇加入 tag,或刪除該建議,這樣系統就能持續收集 positive sample 與 negative sample。

關於「建立 tag 精靈」的介面,我的想像是一個多步驟的流程:

  1. 第一步:幫 tag 取名字、寫個簡介告訴及其他人這個 tag 的定義。
  2. 第二步:提供一個搜尋介面,讓人輸入關鍵字找到符合的文章、選起來(納入 positive sample)。
  3. 第三步:系統自動用這些符合的文章再去找 lookalike,請使用者把不符合該 tag 的文章勾掉(納入 negative sample)。第三步重複個幾次,直到使用者滿意為止。
  4. 第四步:把這些文章通通都標上這個使用者發明的新 tag。同時,我們也有了最初始的一組 positive/negative sample 來 train 一個可以自動標記這個 tag 的 classifier。

這樣的流程可以確保:

  1. 每個新 tag 在建立的那個當下,都已經標過(盡可能多的)舊有的文章了
  2. 每個新文章都可以透過 tag classifiers,輔助編輯快速寫入類別
  3. 可以開放編輯可以用 suggested tags(classifier 建議、但編輯還沒確認加入)來搜尋文章分類。
MrOrz commented 6 years ago

tags index 擺放 tag 的 metadata(例如說解釋某 tag 之類的,.或是之後做 alias / redirection 消歧義之類的功能)。ID 為 sha1(title) 以對 tag title 做 unique constraint,而 articles 增加 tags 欄位擺放 tags 本體。

MrOrz commented 5 years ago

How to evaluate categories: https://www.nngroup.com/articles/tree-testing/

MrOrz commented 4 years ago

Will continue tracking in #143, closing this