以下のようなコードがあります
python
1import nltk 2 3def tfidf(word): 4 collection = nltk.TextCollection(word) #サイトにのっていた 5 doc = [] 6 cdef float a 7 cdef str term 8 for do in word: 9 wo=[] 10 for term in set(do): 11 a = collection.tf_idf(term, do) 12 if(a > 0): 13 wo.append([term,a]) #ここも上のサイトにのってる 14 #print(wo) 15 wo.sort(key=lambda x:x[1]) #keyに無名関数lambdaをいれてる woの1番目の要素(WO(1,2)だったら”2”)でソート 16 wo.reverse() 17 #print(wo) 18 slice1 = [i[0] for i in wo] #woの単語のみを抽出 19 lists = slice1[:20] #20番までにへらす 20 doc.append(list(lists)) #listsが文字列だから、リストに格納 21 del wo 22 23 return doc
wordは
[["aa"],["bb"],["af"],["df"],["fd"]]
のような文字列のリストです
現状このようなコードでcython化させているのですが
全然はやくなりません
そもそもほかの部分に冗長があったりするのかもしれませんが
型定義などで速くする方法はありますか?
この処理が遅くしているなどの指摘でもかまわないので
よろしくお願いします
修正依頼をうけて-----------------
処理時間の変化はやる時々でかわるのですが
それこそ誤差程度で、1秒以内で速くなったり、遅くなったりを
繰り返しています
>現状このようなコードでcython化させているのですが 全然はやくなりません 私にはできませんが、cython化前後で時間がどれくらい変わったか(変わっていないか)の数字があると、わかる人には答えがわかるかもしれません。
回答4件
あなたの回答
tips
プレビュー