質問するログイン新規登録

質問編集履歴

2

修正

2017/07/24 13:28

投稿

kohekoh
kohekoh

スコア140

title CHANGED
File without changes
body CHANGED
@@ -69,4 +69,7 @@
69
69
 
70
70
  if __name__ == "__main__":
71
71
  tfidf()
72
- ```
72
+ ```
73
+
74
+ ちなみにこのテキストファイルは30万行ほどのテキストファイルです
75
+ このときCPU使用率は40%ほどです

1

修正

2017/07/24 13:28

投稿

kohekoh
kohekoh

スコア140

title CHANGED
File without changes
body CHANGED
@@ -11,4 +11,62 @@
11
11
  ```
12
12
  これらを試しましたが、CPUはあまり変化しません
13
13
  コードに何か問題があるのか
14
- 他に何か考えられることはありますか?
14
+ 他に何か考えられることはありますか?
15
+
16
+ ```python
17
+ import nltk
18
+ import numpy as np
19
+ import json
20
+ import nltk_exa as nl
21
+ import time
22
+ from multiprocessing import Pool
23
+ #import multiprocessing
24
+ import sys
25
+
26
+ def subcalc(word):
27
+ subdoc = []
28
+ lists = []
29
+ collection = nltk.TextCollection(word) #サイトにのっていた
30
+ #uniqterms = list(set(collection)) #ここも上と同じサイトに載っていた
31
+ wo=[]
32
+ for term in set(word):
33
+ if(collection.tf_idf(term, word) > 0):
34
+ wo.append([term,collection.tf_idf(term, word)]) #ここも上のサイトにのってる
35
+ #print(wo)
36
+ wo.sort(key=lambda x:x[1]) #keyに無名関数lambdaをいれてる woの1番目の要素(WO(1,2)だったら”2”)でソート
37
+ wo.reverse()
38
+ try:
39
+ slice1 = np.array(wo[:20]) #先頭の文字から終了インデックスまでが抽出
40
+ lists = slice1[:,0] #[:]は戦闘から終了のインデックスまで抽出と、slice1の0番目を格納
41
+ subdoc.append(list(lists)) #listsが文字列だから、リストに格納
42
+ del wo
43
+ except:
44
+ print(wo)
45
+ return subdoc
46
+
47
+ def tfidf():
48
+ t1 = time.time()
49
+ doc0 = []
50
+ doc = []
51
+ word0 = []
52
+ word = []
53
+ f = open("/Users//Dropbox/prg/dataset/word0_notuseful012.txt")
54
+ for row in f:
55
+ word0.append(row.split("]["))
56
+ f.close()
57
+ for i in word0[0]:
58
+ word.append(str(i).replace("[","").replace("]","").replace(",","").replace("'","").replace("\"","").split())
59
+ #word.pop()
60
+ ttt = time.time()
61
+ p = Pool(4)
62
+ #a = subcalc(word) #1コアによる実行
63
+ #print(a)
64
+ doc = p.map(subcalc, word) #複数コアによる実行
65
+ t3 = time.time()
66
+ #print(doc[0][0])
67
+ #print('processing time(nltkはこんだけかかってる)(終わり): ' + str(ttt - tt) + '(sec)')
68
+ print('processing time2(終わり): ' + str(t3 - ttt) + '(sec)')
69
+
70
+ if __name__ == "__main__":
71
+ tfidf()
72
+ ```