[問題] 好像一個有點難度的問題= =?

看板Perl作者 (成就你的大事)時間17年前 (2007/03/29 22:37), 編輯推噓11(1103)
留言14則, 5人參與, 最新討論串1/2 (看更多)
假設我有以下的資料: T1 T2 T3 T4 T5 Doc1 1 2 0 0 1 Doc2 3 1 2 3 0 Doc3 3 0 0 0 1 Doc4 2 1 0 3 0 Doc5 2 2 1 5 1 但我想計算哪幾個詞是相似的,因此我使用兩個詞之間的計算出來的分數 來決定它們之間是否相似(假設如果大於一個給定的值10的話) 1st: 由於一開始沒有決定誰與誰相似,因此,我先指定T1自己為一組==>C1={T1} 2nd: 因此,接下來會進行C1與T2的計算,計算如下: C1 = <1, 3, 3, 2, 2>, T2 = <2, 1, 0, 1, 2>. SIM(T2, C1) = 1*2 + 3*1 + 3*0 + 2*1 + 2*2 = 11 由於SIM(T2, C1) = 11 >10,因此T2被認定與C1同一組 所以,現在變成C1 = {T1, T2} 為一組,但由於T1,T2同一組後,要重新計算其權重值 因此,新的權重值為: C1 = <(1+3)/2, (3+1)/2, (3+0)/2, (2+1)/2, (2+2)/2> = <3/2, 4/2, 3/2, 3/2, 4/2> 3rd: 接下來又去計算與T3的相似程度以決定是否要歸在同組 SIM(T3, C1) = 0 + 8/2 + 0 + 0 + 4/2 = 6 <10 所以T3和C1不同組 ==>C1 = {T1, T2} C2 = {T3} 4th: 接下計算T4與C1 及 T4與C2的相似度計算,以決定T4要分至C1或C2去 SIM(T4, C1) = <0, 3, 0, 3, 5> . <3/2, 4/2, 3/2, 3/2, 4/2> = 0 + 12/2 + 0 + 9/2 + 20/2 = 20.5 SIM(T4, C2) = <0, 3, 0, 3, 5> . <0, 2, 0, 0, 1> = 0 + 6 + 0 + 0 + 5 = 11 由於皆大於10,因此取最大的,並將其分至最大的那組去 C1 = {T1, T2, T4} C2 = {T3} 再重新計算C2的權重值,但由於C2沒加入任何的東西,因此即是T3的權重 C2 = <0, 2, 0, 0, 1> 由於C1新增了T4,因此,將T1, T2, T4的相加後除以3 C1 = <3/3, 7/3, 3/3, 6/3, 9/3> 不好意思麻煩大家了= =,寫了好久還是沒什麼頭緒出來, 好像需要用到很多不同的資料結構及技巧才能寫的出來的樣子= = 不知道是否有高手可以補充說明,要怎麼寫會比較好呢?感謝你囉^^ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.141.125

03/29 23:20, , 1F
問的有點偏,這是演算法設計的問題,不是perl的問題吧
03/29 23:20, 1F

03/29 23:59, , 2F
是有點像演算法啦= =只是好像需要用到Hash一堆有的沒的= =
03/29 23:59, 2F

03/30 00:01, , 3F
就是有些小地方可能需要大家的建議會想的比較快Orz
03/30 00:01, 3F

03/30 00:07, , 4F
所以才會問說若是用perl來寫 怎麼表達比較好^^||
03/30 00:07, 4F

03/30 00:14, , 5F
因為有想過用矩陣 但perl中好像沒有,然後二維陣列好像也沒
03/30 00:14, 5F

03/30 00:15, , 6F
實在是寫的有點亂了= =才上來請教大家:)
03/30 00:15, 6F

03/30 00:19, , 7F
=.=要算新權重....一整個類神經網路0rz......不好的回憶
03/30 00:19, 7F

03/30 00:19, , 8F
看到有要帶公式作法的東西 ... 第一件事請洽 CPAN :p
03/30 00:19, 8F

03/30 00:23, , 9F
不過看起還好像只要簡單的向量或是矩陣運算就夠了
03/30 00:23, 9F

03/30 00:26, , 10F
cpan上面好像沒有可用的套件 我也有想過orz
03/30 00:26, 10F

03/30 00:40, , 11F
恩恩 如r大大所講好像只要簡單的向量 但perl不清楚有?
03/30 00:40, 11F

03/30 01:01, , 12F
一整個algorithms ~_~"
03/30 01:01, 12F

03/30 01:07, , 13F
vector matrix 定有的阿 不過再看起來好像只用到 dot
03/30 01:07, 13F

03/30 01:09, , 14F
所以自己寫搞不好比較快 ...另外多維陣列 Perl 是沒問題的
03/30 01:09, 14F
文章代碼(AID): #162yz2KV (Perl)
文章代碼(AID): #162yz2KV (Perl)