質問編集履歴

2

意図的な内容抹消の取り消し

2018/10/10 02:06

投稿

rrrrrrrry
rrrrrrrry

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,9 +1,131 @@
1
1
  ### 前提・実現したいこと
2
-
3
-
4
2
 
5
3
  [実現したいこと]作成したngramのプログラムについて出現回数の実装
6
4
 
5
+ ngramした後の出現回数がどのようになっているのか確認できるようなプログラムをどう書けばいいのかご教授いただきたいです。このソースは広いもので、文字コードの変換とpython2のコードをpython3に変換しました。
7
6
 
7
+ ### 該当のソースコード
8
8
 
9
+ ```python
10
+
11
+ #!/usr/bin/env python
12
+
13
+ # -*- coding: utf-8 -*-
14
+
15
+ import sys
16
+
17
+ import subprocess as cmd
18
+
19
+ # テキスト -> 単語(形態素)集合
20
+
21
+ def text2bow(obj,mod):
22
+
23
+
24
+
25
+ # input: ファイルの場合はmod="file", input: 文字列の場合はmod="str"
26
+
27
+ if mod == "file":
28
+
29
+ morp = cmd.getstatusoutput("cat " + obj + " | mecab -Owakati")
30
+
31
+ elif mod == "str":
32
+
9
- ngramした後の出現回数がどのようになっているのか確認できるようなプログラムをどう書けばいいのかご教授いただきたいです。このソースは広いもので、文字コードの変換とpython2のコードをpython3に変換しました。
33
+ morp = cmd.getstatusoutput("echo " + obj.encode('utf-8') + " | mecab -Owakati")
34
+
35
+ else:
36
+
37
+ print("error!!")
38
+
39
+ sys.exit(0)
40
+
41
+
42
+
43
+ words = morp[1]
44
+
45
+ words = words.replace('\n','')
46
+
47
+ bow = words.split(' ')
48
+
49
+ return bow
50
+
51
+ # N-gramの生成
52
+
53
+ def gen_Ngram(words,N):
54
+
55
+
56
+
57
+ ngram = []
58
+
59
+
60
+
61
+ for i in range(len(words)):
62
+
63
+ cw = ""
64
+
65
+
66
+
67
+ if i >= N-1:
68
+
69
+ for j in reversed(list(range(N))):
70
+
71
+ cw += words[i-j]
72
+
73
+ else:
74
+
75
+ continue
76
+
77
+
78
+
79
+ ngram.append(cw)
80
+
81
+
82
+
83
+ return ngram
84
+
85
+ # 出力
86
+
87
+ def output_Ngram(ngram):
88
+
89
+
90
+
91
+ for i in range(len(ngram)):
92
+
93
+ print(ngram[i])
94
+
95
+ def main():
96
+
97
+
98
+
99
+ argvs = sys.argv
100
+
101
+
102
+
103
+ # input: ファイルの場合
104
+
105
+ bow = text2bow(argvs[2],mod="file")
106
+
107
+
108
+
109
+ # input: 文字列の場合
110
+
111
+ #bow = text2bow(obj=u"これはN-gramを生成するプログラムです.",mod="str")
112
+
113
+
114
+
115
+ ngram = gen_Ngram(bow,int(argvs[1]))
116
+
117
+
118
+
119
+ output_Ngram(ngram)
120
+
121
+ if __name__ == "__main__":
122
+
123
+
124
+
125
+ main()
126
+
127
+ ```
128
+
129
+ ### 参考文献
130
+
131
+ https://qiita.com/takumi_TKHS/items/942492b72aaf7b6a6213

1

修正

2018/10/10 02:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -7,155 +7,3 @@
7
7
 
8
8
 
9
9
  ngramした後の出現回数がどのようになっているのか確認できるようなプログラムをどう書けばいいのかご教授いただきたいです。このソースは広いもので、文字コードの変換とpython2のコードをpython3に変換しました。
10
-
11
-
12
-
13
- ### 該当のソースコード
14
-
15
-
16
-
17
- ```python
18
-
19
- #!/usr/bin/env python
20
-
21
- # -*- coding: utf-8 -*-
22
-
23
-
24
-
25
- import sys
26
-
27
- import subprocess as cmd
28
-
29
-
30
-
31
- # テキスト -> 単語(形態素)集合
32
-
33
- def text2bow(obj,mod):
34
-
35
-
36
-
37
- # input: ファイルの場合はmod="file", input: 文字列の場合はmod="str"
38
-
39
- if mod == "file":
40
-
41
- morp = cmd.getstatusoutput("cat " + obj + " | mecab -Owakati")
42
-
43
- elif mod == "str":
44
-
45
- morp = cmd.getstatusoutput("echo " + obj.encode('utf-8') + " | mecab -Owakati")
46
-
47
- else:
48
-
49
- print("error!!")
50
-
51
- sys.exit(0)
52
-
53
-
54
-
55
- words = morp[1]
56
-
57
- words = words.replace('\n','')
58
-
59
-
60
-
61
- bow = words.split(' ')
62
-
63
-
64
-
65
- return bow
66
-
67
-
68
-
69
- # N-gramの生成
70
-
71
- def gen_Ngram(words,N):
72
-
73
-
74
-
75
- ngram = []
76
-
77
-
78
-
79
- for i in range(len(words)):
80
-
81
- cw = ""
82
-
83
-
84
-
85
- if i >= N-1:
86
-
87
- for j in reversed(list(range(N))):
88
-
89
- cw += words[i-j]
90
-
91
- else:
92
-
93
- continue
94
-
95
-
96
-
97
- ngram.append(cw)
98
-
99
-
100
-
101
- return ngram
102
-
103
-
104
-
105
- # 出力
106
-
107
- def output_Ngram(ngram):
108
-
109
-
110
-
111
- for i in range(len(ngram)):
112
-
113
- print(ngram[i])
114
-
115
-
116
-
117
- def main():
118
-
119
-
120
-
121
- argvs = sys.argv
122
-
123
-
124
-
125
- # input: ファイルの場合
126
-
127
- bow = text2bow(argvs[2],mod="file")
128
-
129
-
130
-
131
- # input: 文字列の場合
132
-
133
- #bow = text2bow(obj=u"これはN-gramを生成するプログラムです.",mod="str")
134
-
135
-
136
-
137
- ngram = gen_Ngram(bow,int(argvs[1]))
138
-
139
-
140
-
141
- output_Ngram(ngram)
142
-
143
-
144
-
145
- if __name__ == "__main__":
146
-
147
-
148
-
149
- main()
150
-
151
-
152
-
153
- ```
154
-
155
-
156
-
157
- ### 参考文献
158
-
159
-
160
-
161
- https://qiita.com/takumi_TKHS/items/942492b72aaf7b6a6213