cofacts / rumors-api

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

提升 crowdsource 資料庫的搜尋準度 #7

Closed MrOrz closed 7 years ago

MrOrz commented 7 years ago

問題描述:https://www.facebook.com/groups/1847232902175197/permalink/1884171838481303/

需要檢查分數機制的問題。 或許需要實做 #1 才能更有系統地來 tune 搜尋相關性公式。

需求:

  1. 如果資料庫有,就應該要精準地找出該筆資料。
  2. 如果資料庫沒有,而且沒把握找到的資料是否有關聯,寧願回傳說找不到。
MrOrz commented 7 years ago

另一個例子: https://www.facebook.com/groups/1847232902175197/permalink/1884494008449086/

MrOrz commented 7 years ago

拿兩個正確消息(所以不會再謠言資料庫)去找 卻還是硬 match 出了結果 https://www.facebook.com/groups/1847232902175197/permalink/1884670248431462/

MrOrz commented 7 years ago

現在輸入「魏應充」會跑出奇怪的結果 @@

2017-01-04 2 20 42

雖然理論上轉傳訊息應該會包含更多的字 但不應該要這麼容易被玩壞才對

MrOrz commented 7 years ago

輸入川普內閣會回愛滋病 @@ https://www.facebook.com/groups/1847232902175197/permalink/1894853560746464/

poga commented 7 years ago

現在的作法是完全依賴 elasticsearch?

Plagiarism detection 那邊應該有一些招可以拿來用

今晚會試試 XD

MrOrz commented 7 years ago

另一個無關的回答 https://m.facebook.com/groups/1847232902175197?view=permalink&id=1895528687345618

我覺得對於這些過短的訊息,可能是「是」之類的stop words 導致 match 出這樣的文章。或許換成用 bigram 來做 tokenization 會好一些。

或者我應該在更前面的時候就來判斷訊息長度,過短的直接拒絕查詢?

MrOrz commented 7 years ago

感謝 @sayuan 的 PR,今晚已經把它 release 到 production 上囉! 試了幾個上面的訊息,都已經回傳滿意的答覆了。

不過我發現,現在「輸入川普內閣會回愛滋病」的問題依舊存在 @@ https://www.facebook.com/groups/1847232902175197/permalink/1894853560746464/

因為那個 answer 的流言全文是:

剛獲的資料令人震驚,難怪總統及執政黨一直運用國家公器,操縱媒體為同運護航,原來隱藏了非常惡毒的陰謀。
生產愛滋病用藥的中裕新藥創辦人之一就是當今總統蔡英文,如果讓台灣像南非開放同性婚,性解放後造成有那麼多人患愛滋病,最大得利者會是誰呢!?
中裕新藥股份有限公司
TaiMed biologic
成立  2007年
創辦人 陳良博、楊育民、蔡英文、何大一
董事長 陳志全
代表人物    董事長:陳志全
董事:周綠蘋
董事:黃昭蓮
董事:卓隆燁
董事:劉忠賢
董事:張念原
獨立董事:陳明進
獨立董事:許照惠
監察人:林乾坤
監察人:沈筱玲
監察人:李瑞珠
總部地點     中華民國(臺灣)臺北市內湖區瑞光路607號3樓
產業  藥品製造業
產品  藥物
所有權者    長春投資股份有限公司
行政院國家發展基金管理會
潤泰全球股份有限公司
潤泰創新國際股份有限公司
母公司 潤泰集團
網址  www.taimedbiologics.com.tw
中裕新藥(英語:TaiMed biologic,縮寫為 TMB),原名宇昌生技,台灣生物科技製藥公司,1997年由陳良博、楊育民與蔡英文創立,由中央研究院院士何大一擔任公司顧問,生產愛滋病用藥 TMB-355。蔡英文曾任此公司首任董事長,因此捲入宇昌案爭議。

跟川普內閣那篇的「董事」一樣都很多,所以就被 match 出來了 QQ

sayuan commented 7 years ago

找了川普內閣的原文來做 explain

美利堅合眾公司~美國史上最強CEO集體入主白宮,發展美國經濟已成川普政府頭等大事! 
副總統:彭斯
國務卿:艾克森美孚董事長
副國務卿:高盛董事長
副國務卿:通用電氣董事長
白宮辦公室主任:洛克希德馬丁董事長
白宮辦公室副主任:格魯曼董事長
白宮辦公室副主任:通用動力董事長
科技部部長:波音董事長
科技部副部長:聯合技術董事長
科技部副部長:通用汽車董事長
能源部部長:雷神董事長
能源部副部長:福特汽車董事長
能源部副部長:霍尼韋爾董事長
財政部部長:摩根士丹利董事長
財政部副部長:美國銀行董事長
財政部副部長:花旗集團董事長

除了 "董事" 以外,"公司", "總統", "集團", "發展", "科技" 也都在兩篇中都出現, 要解決這個問題可以考慮用 more_like_thisminimum_should_match 參數 (預設 30%), 例如將這個參數增加至 70% 以上,然後拔掉目前的 theBestDoc 實作。

這部份我都可以發 PR,但想先了解一下大家的想法。

MrOrz commented 7 years ago

minimum_should_match is added in #25 之後 theBestDoc 會拿掉

畢竟就連 google 也是把所有的搜尋結果吐出來,要硬回傳「一個最好的」實在不是個好作法。

LINE bot 使用流程之後會變成 https://docs.google.com/drawings/d/1kStWPVHbzrpSTKu9-EK5TN52Xj7WY7uAiEBa00v6xK4/edit

搜尋結果的部分,都會用列表來讓使用者選擇自己想看的那個。

MrOrz commented 7 years ago

相關的主題,但細節不同的例子 https://www.facebook.com/groups/1847232902175197/permalink/1905263363038817/