推 Sunal: 你每讀一行NG就要開檔關檔一次? 另外不要用關鍵字當變數名03/03 00:31
→ Sunal: 其實是開檔兩次 temp.txt跟ketword.txt03/03 00:33
→ Sunal: 一次讀完NG & keyword檔案再一次寫到 temp.txt就好03/03 00:34
變數是我貼文時沒改到,不好意思。我不確定是否是頻繁讀寫拖慢效率,因為我在其他地
方也有更多次數的讀寫,但耗費的時間仍少於20秒,所以我才想是否是比對字典太花時間
。
→ djshen: O(n)的東西寫成O(n^2)..03/03 00:44
對,早上起來再看就發現錯了QQ
推 TitanEric: set difference 03/03 01:03
謝謝,這個方法還沒用過,我測試看看效率
推 edwar: t=open 到 t.close 的縮排位置錯了, 要跟第一個for一樣03/03 01:36
對,昨晚沒看出來QQ
推 nini200: keyword集合A NG集合B A-B?03/03 01:36
→ edwar: 還有,存放NG關鍵字dict的變數名字最好換一下,比如用ng03/03 01:38
→ edwar: 變數名字取dict可能會有問題03/03 01:40
變數是我貼文時沒改到,不好意思。
推 lemon651: set difference 就解了阿03/03 02:41
推 lemon651: 既然你都知道有set或是dict這種數據結構 怎麼會想要每查03/03 02:44
→ lemon651: 一個字打開另一個檔爬一遍阿...03/03 02:44
推 lemon651: 我建議看一下你其他地方的文件讀寫是不是也是這種寫法,03/03 02:46
→ lemon651: 計算不花時間,io的時間不知道耗費了多少03/03 02:46
其他地方也有類似寫法,但都效率正常,不過我還是Review一下有沒有問題,謝謝。
推 p8p8: 你的兩個for loop要在同一個indent啦~03/03 04:22
對,早上重看codes就發現錯了…暈
→ p8p8: 你現在這樣是nested loop,造成每讀一行NG.txt,就讀取一整03/03 04:22
→ p8p8: 個Keyword.txt一次,那當然效率很差03/03 04:22
→ p8p8: 本來應該是O(N+M)的,你的寫法是O(NM)差很多03/03 04:22
→ p8p8: 還有跟前幾樓說的一樣,用set即可不需用dictionary03/03 04:23
謝謝,其實那段code是節錄出來再改掉變數名才貼的。使用dict的原因是在原程式中另有
用途。不過單純就這段目的而言確實如您所說用set就好了。
※ 編輯: shala (209.234.253.197), 03/03/2019 09:44:46
推 sean50301: ahocorasick03/03 16:40
推 utopia12: Don’t use naive solutions, try elasticsearch 03/04 04:43
→ shala: 可以解釋為什麼嗎?謝謝03/04 17:44
※ 編輯: shala (45.56.161.176), 03/13/2019 21:25:37