質問編集履歴

3

ソースコードの変更

2017/08/28 17:29

投稿

kamatmt
kamatmt

スコア25

test CHANGED
File without changes
test CHANGED
@@ -10,155 +10,21 @@
10
10
 
11
11
 
12
12
 
13
- 例えば、a[0][1][2]は「テラテイル」。b[0][1][2]は「テラ\n」
13
+ 例えば、word[0][1][2]は「テラテイル」。kei[0][1][2]は「テラ\n」
14
14
 
15
15
 
16
16
 
17
17
  ```ruby
18
18
 
19
-
20
-
21
- ##
22
-
23
- #ファイル入力
24
-
25
- # @param input_filename 入力ファイル
26
-
27
- # return ツイート文
28
-
29
- def read_data_file(input_filename)
30
-
31
- sentence=[]
32
-
33
- f=File.open("#{input_filename}","r:UTF-8")
34
-
35
- f.each{|data|
36
-
37
- sentence.push(NKF.nkf("-Xw",data))
38
-
39
- }
40
-
41
- sentence
42
-
43
- return sentence
44
-
45
- end
46
-
47
- #
48
-
49
-
50
-
51
-
52
-
53
- #単語の入力
54
-
55
- kei=[]
56
-
57
- for n in 1..23 do
58
-
59
- kei[n]=[]
60
-
61
- kei[n][0] = read_data_file(kei_str0[n])#kei_str0[n]にはディレクトリとファイル名
62
-
63
- for i in 1..7 do
64
-
65
- kei[n][i]=read_data_file(kei_str[n][i])#kei_str[n]にはディレクトリとファイル名
66
-
67
- end
68
-
69
- end
70
-
71
-
72
-
73
-
74
-
75
- input_str=gets
76
-
77
- si=Hash.new
78
-
79
- input_str.split(",").each{|ch|
80
-
81
- ch.strip!
82
-
83
- for n in 1..23 do
84
-
85
- si[n]="ディレクトリとファイル名の指定"
86
-
87
- end
88
-
89
- }
90
-
91
-
92
-
93
- chan=[]
94
-
95
- for n in 1..23 do
96
-
97
- chan[n]=[]
98
-
99
- for i in 1..7 do
100
-
101
- chan[n][i]="ディレクトリとファイル名の指定"
102
-
103
- end
104
-
105
- end
106
-
107
-
108
-
109
-
110
-
111
- si.each{|ch,in_file_name|
112
-
113
- fb=ch.to_i
114
-
115
- puts ch
116
-
117
- t=[]
118
-
119
- tmp_t=[]
120
-
121
- #文章A
122
-
123
- t[0] = read_data_file(in_file_name)
124
-
125
- #文章B
126
-
127
- for i in 1..7 do
128
-
129
- tmp_t[i]=read_data_file(chan[fb][i])
130
-
131
- t[i]=[]
132
-
133
- for j in ruizido_num[i]..tmp_t[i].length-1 do
134
-
135
- t[i][j]=(tmp_t[i][j])
136
-
137
- end
138
-
139
- t[i].compact!
140
-
141
- end
142
-
143
- #############################
144
-
145
-
146
-
147
- #文章A 単語
148
-
149
- #文章B 単語
150
-
151
- max_cha_num=t.length-1
152
-
153
19
  word=[]
154
20
 
155
- for i in 0..t.length-1 do
21
+ for i in 0..t.length-1 do #tには文章
156
22
 
157
23
  word[i] = []
158
24
 
159
25
  for j in 0..t[i].length-1 do
160
26
 
161
- word[i].push(hinsi(t[i][j]))
27
+ word[i].push(hinsi(t[i][j]))#hinsiは形態素解析,wordには形態素解析の結果
162
28
 
163
29
  end
164
30
 
@@ -166,15 +32,19 @@
166
32
 
167
33
  #
168
34
 
169
- p word[0][1][2][3]
35
+ p word[0]
170
36
 
171
- p kei[0][1][2][3]
37
+ p word[0][1][2]
172
38
 
39
+ p kei[0][1][2]
40
+
173
- p word[0][1][2][3].include?(kei[0][1][2][3])
41
+ p word[0][1][2].include?(kei[0][1][2].chomp)
174
42
 
175
43
  ```
176
44
 
177
45
  出力結果
46
+
47
+ "[["a","b","c"],["d","e","テラテイル"],["f"],[],["g","h"]]"
178
48
 
179
49
  "テラテイル"
180
50
 

2

ソースコードの抜粋

2017/08/28 17:29

投稿

kamatmt
kamatmt

スコア25

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,8 @@
3
3
  include?(String)は指定の文字列を含む場合にtrueかfalseで返すと認識でいますが、完全に一致しないとtrueが返ってこない状況に困っています。
4
4
 
5
5
  このコードの前にはファイル読み込み等を行っています。
6
+
7
+ ある文章を形態素解析をし、形態素解析した単語(名詞のみ)と別のファイルに用意した単語を比較するプログラムを書いています。形態素解析した文章にはどの文章の単語かわかるように配列に保管されています。
6
8
 
7
9
 
8
10
 
@@ -14,11 +16,161 @@
14
16
 
15
17
  ```ruby
16
18
 
17
- p a[0][1][2]
18
19
 
19
- p b[0][1][2]
20
20
 
21
+ ##
22
+
23
+ #ファイル入力
24
+
25
+ # @param input_filename 入力ファイル
26
+
27
+ # return ツイート文
28
+
29
+ def read_data_file(input_filename)
30
+
31
+ sentence=[]
32
+
33
+ f=File.open("#{input_filename}","r:UTF-8")
34
+
35
+ f.each{|data|
36
+
37
+ sentence.push(NKF.nkf("-Xw",data))
38
+
39
+ }
40
+
41
+ sentence
42
+
43
+ return sentence
44
+
45
+ end
46
+
47
+ #
48
+
49
+
50
+
51
+
52
+
53
+ #単語の入力
54
+
55
+ kei=[]
56
+
57
+ for n in 1..23 do
58
+
59
+ kei[n]=[]
60
+
61
+ kei[n][0] = read_data_file(kei_str0[n])#kei_str0[n]にはディレクトリとファイル名
62
+
63
+ for i in 1..7 do
64
+
65
+ kei[n][i]=read_data_file(kei_str[n][i])#kei_str[n]にはディレクトリとファイル名
66
+
67
+ end
68
+
69
+ end
70
+
71
+
72
+
73
+
74
+
75
+ input_str=gets
76
+
77
+ si=Hash.new
78
+
79
+ input_str.split(",").each{|ch|
80
+
81
+ ch.strip!
82
+
83
+ for n in 1..23 do
84
+
85
+ si[n]="ディレクトリとファイル名の指定"
86
+
87
+ end
88
+
89
+ }
90
+
91
+
92
+
93
+ chan=[]
94
+
95
+ for n in 1..23 do
96
+
97
+ chan[n]=[]
98
+
99
+ for i in 1..7 do
100
+
101
+ chan[n][i]="ディレクトリとファイル名の指定"
102
+
103
+ end
104
+
105
+ end
106
+
107
+
108
+
109
+
110
+
111
+ si.each{|ch,in_file_name|
112
+
113
+ fb=ch.to_i
114
+
115
+ puts ch
116
+
117
+ t=[]
118
+
119
+ tmp_t=[]
120
+
121
+ #文章A
122
+
123
+ t[0] = read_data_file(in_file_name)
124
+
125
+ #文章B
126
+
127
+ for i in 1..7 do
128
+
129
+ tmp_t[i]=read_data_file(chan[fb][i])
130
+
131
+ t[i]=[]
132
+
133
+ for j in ruizido_num[i]..tmp_t[i].length-1 do
134
+
135
+ t[i][j]=(tmp_t[i][j])
136
+
137
+ end
138
+
139
+ t[i].compact!
140
+
141
+ end
142
+
143
+ #############################
144
+
145
+
146
+
147
+ #文章A 単語
148
+
149
+ #文章B 単語
150
+
151
+ max_cha_num=t.length-1
152
+
153
+ word=[]
154
+
155
+ for i in 0..t.length-1 do
156
+
157
+ word[i] = []
158
+
159
+ for j in 0..t[i].length-1 do
160
+
161
+ word[i].push(hinsi(t[i][j]))
162
+
163
+ end
164
+
165
+ end
166
+
167
+ #
168
+
169
+ p word[0][1][2][3]
170
+
171
+ p kei[0][1][2][3]
172
+
21
- p a[0][1][2].include?(b[0][1][2].chomp!)
173
+ p word[0][1][2][3].include?(kei[0][1][2][3])
22
174
 
23
175
  ```
24
176
 
@@ -35,3 +187,9 @@
35
187
  開発環境はruby2.1.8 unixです。
36
188
 
37
189
  原因と解決方法をよろしくお願いします。
190
+
191
+
192
+
193
+ 変更点
194
+
195
+ ソースコードの一部を抜粋しました。分かりづらくなって申し訳ないです。

1

誤字の部分を修正しました。申し訳ありません。

2017/08/28 09:44

投稿

kamatmt
kamatmt

スコア25

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  p b[0][1][2]
20
20
 
21
- p a[0][1][2]..include?(b[0][1][2].chomp!)
21
+ p a[0][1][2].include?(b[0][1][2].chomp!)
22
22
 
23
23
  ```
24
24
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  "テラ\n"
30
30
 
31
- fales
31
+ false
32
32
 
33
33
 
34
34