推 nchunerdy120: 感謝您的解惑!小弟還有疑問,就是在分類器訓練完 05/09 09:38
→ nchunerdy120: 後(選定attribute也給值了),要將模型實際應用時 05/09 09:38
→ nchunerdy120: ,使用者如果給數字,要如何對應到模型中的文字分 05/09 09:38
→ nchunerdy120: 數?例如使用者想要一百塊台幣以內,要如何對應到「 05/09 09:38
→ nchunerdy120: 食物價錢」那一塊呢?感謝您 05/09 09:38
這個就有些事情要談了。
1. 你原本取得的原始評論是否就能夠精確到這種地步?
原始資料是否就足以讓人做出這個判斷?比如有些評論可能只寫了「150元就可
以吃到不錯」,那到底是否給人足夠資訊判斷100元的狀況呢?原始資料拿給人看都
不足以判斷的話,當然根本上就不可能training出可以良好判斷的model了XD
2. 從原始文章到feature這個過程中,到底能夠多精確?
也許原始評論其實有足夠資訊,但是自然語言分析起來相對困難。例如:
「一般這種店大概都要150元以上才能吃到不錯的料理。但是這家店很特別,能
以低其他店1/3的價格就端出不錯的東西。」(我知道這寫法一般來說不太自然,只
是舉例)
這段評論給人類來看是足以判斷100元可以吃得不錯。然而這句話要讓電腦解析
難度就高了。
首先150元這句話跟這家店的描述就拆在不同句子,而且這家店的描述得要能解
析成計算150 * (1 - 1/3) = 100才能夠得知確切數值,這超級困難,不是隨便平常
能取得的自然語言處理model就能解決的事情。
雖然有資訊,但是無法順利解析取得model甚至還會解錯。一般的model看到上面
那些內容搞不好抓到的資訊就是150元,厲害一點解成150 * 1/3 = 50元,兩個都是
錯的。
那事實上你到底在轉換成feature這件事情上能做到什麼地步?這必須你自己先
解讀並做一些測試才能夠有所理解。
3. feature定義與model選擇
就算解出某些價位數值,接下來還有你怎麼儲存應用的問題。你的feature要直
接存一個價位數值嗎?還是定義成「很貴─稍貴─一般─稍低─超低」之類的階級?
階級的話要幾階?階級的話一般是怎麼定義的?是要跟同類店比較還是跟所有餐廳比
較?
而且一家店也不會只有一種價位,有可能「100可以吃得還可以,但是150就能吃
到好料了」,這樣你打算怎麼定義你的feature呢?是某種fuzzy的定義嗎?還是定義
成絕對的多個數值代表某家店的高中低消呢?
model選擇也是跟這有關。你讓使用者輸入是明確的價位還是階級?model要怎麼
解讀處理這個輸入跟feature之間的關係?使用者要求100,model該不該給他110的選
擇?如果feature只是存階級,那使用者要求100,model該怎麼判斷是一般、稍低還
是超低?需要跟食物種類一起分析嗎?
當然,你亂訂一套feature,亂選一個model直接上,總是可能給你結果。但你如
果想要更準確的結果,這些事情你就不得不想。
而這不是沒看到實際資料、也不知道你問題詳細要求跟定義、實際應用狀況的我
或其他人能夠直接給你建議的事情,你必須先自行分析這些細節後,提出更明確的問
題定義才有辦法進一步選擇更好的方式或問出更明確的問題。
結論一下,這問題可大可小。當成小問題來解,你亂套一個bag-of-words +
classification,它也是可以給你一個結果。結果未必好,但總就是一個結果。
但想深入解得很好,光是上面每一個部分都有可能足以寫出一篇paper(當然,
也八成已經有人解過相關問題寫過paper了,但不一定完全符合你的問題要求),整
體當然更是一個超大問題。
說實在的,這東西要是做得很好,那可是充分有商用價值的。Google Map跟這一
搭馬上就成為能夠自動爬網路內容建立的精確美食地圖了,超級有賣點啊XD
也就是說,你所謂這個學生做專案,到底:
1. 只是一堂課簡單的作業專案
2. 是研究所以上的論文用專案
3. 是產學合作的實際應用專案
這會非常明顯地影響到難度以及難在哪一部分XD
※ 編輯: ddavid (1.164.177.18 臺灣), 05/10/2020 00:43:23
推 nchunerdy120: 感謝您費心回文解惑,真的非常感謝!小弟這個專案是 05/10 14:02
→ nchunerdy120: 碩士的畢業論文用專案,這個專案是跟學校MBA合作的 05/10 14:02
→ nchunerdy120: ,雖然不用到您說的高準確度,不過也無法套bag of w 05/10 14:02
→ nchunerdy120: ord直接建模... 資料集的探討學校排定六月初,等到 05/10 14:02
→ nchunerdy120: 時候仔細研究資料集了再上來發問,真的感謝您的熱 05/10 14:02
→ nchunerdy120: 心解惑! 05/10 14:02
如果是碩士畢業論文的話,你不要等到六月。六月那時只是讓你實際確認資料狀
況跟issues的細節,但有一件最重要的事情是你現在就應該開始的:
現在你就應該開始大量Survey paper,去找出所有可能相關的前人論文,先好好
看一下已經有哪些方法可能套進來使用,哪些方法雖然不能直接用卻可以做某些轉換
應用,哪些方法主軸無關但卻有其中一部分可以拆來應用。
這些Survey完,你就會發現整個work中,哪些是以前的研究其實就做得不錯,並
不容易突破,而另外哪些是缺口尚大容易突破的地方。畢竟碩論直接關係到畢業,沒
事不要給自己找別人已經做到超好的地方硬幹,要去找雖有技術性但還相對容易突破
的東西。
於是當你找出一個主要的突破點後,跟這個突破點最相關的那些論文就會是你的
主要比較對象,而其他雖然相關但不是主要突破方向的就會是你應用來解決其他部分
的架構,這兩類最後就都會是你的reference章節該寫到的東西。
用圖來表示可能像這樣:
評論文章 -> A -> B -> C -> 推薦結果
A可能是data cleaning相關。
B可能是特徵擷取相關。
C可能是模型選擇與建立相關。
如果你建立了這樣的架構,你可能就得去survey跟ABC三部分有關的論文。最後
你可能認為:
A雖然沒有針對餐廳評論做的,但你發現某些對商品評論data cleaning的研究做
得不錯,只要調整一下可能就可以應用得到不錯的結果。
B雖然有大量的研究,但對於這個work都各有關鍵性的缺失,沒有一項過去研究
可以完善解決此work面對的所有問題。
C在AB都有一定成果的前提下,有過去的方法可以建立很好的model。
那你可能會把主要突破點訂在B,也在A部分有一些修改調整的貢獻,然後C完全
套用舊有不錯的架構。最後就會變成:
評論文章 -> modified A -> X -> C -> 推薦結果
X會是你論文要強調的主要貢獻,它要使結果可以擊敗所有過去研究的舊架構。
因此你要有實驗證明X導致你的正確性能在目前這個work問題定義下,大多數情況都
勝過採用舊的各種方法。
modified A也是你的次要貢獻。雖然你只是修改,但是你讓舊有研究能夠適應調
整新issue的需求。因此這部分,你要有個實驗證明原本的A直接硬套是跑不動或結果
不佳的,必須經過你修正調整才可以適用你的work。
C不是沒修改就啥都不用討論喔。因為C也往往不會過去只有一種解法,因此對於
C,你可能需要至少就過去文獻來討論說他們互相競爭的結論,已經有最新的某個C是
效果最好並且最適合你現在work的要求,給出合理的理由。在某些情況下,可能有數
個C其實看起來都能用也都不錯,那你可能就要進一步說明甚至來個實驗討論為何你
最後選了特定的C而非其他的,它有什麼明確更適合此work的地方或至少各方面都持
平不輸其他選擇等等。
這樣你的論文架構就會很明確並有競爭性,也不會ABC一起搞、東打一塊西打一
塊,最後搞不清楚自己到底幹了什麼才加減贏了比較對象一點點。
至於survey的目標範圍該怎麼訂、關鍵字該怎麼下,這很吃對問題的了解、背景
知識的深度以及研究經驗,就不是我能直接在這邊給建議的了。跟老師討論一下會更
有幫助,或者在你已經對問題有一定了解的情況下才來進一步問有沒有人知道相關議
題與研究,會更事半功倍。但初步總是會有一些很明確知道相關的方向可以先survey
,然後從這些論文的reference(較舊)以及cite這些論文的其他論文(較新),又
或是同作者的其他研究,一路串下去就有可能發現很多原本沒想到但有關的Paper方
向跟關鍵字。
另外就是要嘗試多點想像力。看一個研究不要只看它表面針對的問題,而是要額
外想看看,雖然原本看起來好像跟我的問題完全不相關,但如果我把input改一下、
如果我稍微改一下特徵取法、如果我加入某個權重、如果我只切其中某個部分來使用
等等,會不會其實可以解決我問題或其中的某部分?有時會在很意外看似不相干的領
域挖到可以解決問題的元素回來用。就像研究各種物理、生物、大腦行為結果延伸引
用概念而產生的機器學習演算法簡直多不勝數。
推 chia0712: 推認真回文 05/10 14:27
※ 編輯: ddavid (36.225.54.40 臺灣), 05/11/2020 11:03:35
推 nchunerdy120: 真的非常非常非常非常非常感謝您這麼詳細的回覆QQ 05/15 00:08
→ nchunerdy120: 小弟會照您的建議努力,如果有其他疑問再在版上發 05/15 00:08
→ nchunerdy120: 文,太感謝您了!!! 05/15 00:08
推 nini200: 優文!推 05/15 17:50