回答編集履歴

4

追記

2018/06/18 06:45

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -153,3 +153,59 @@
153
153
  [Synset('dog.n.01')]
154
154
 
155
155
  ```
156
+
157
+
158
+
159
+ 質問追記を受けて
160
+
161
+ ---
162
+
163
+ > csvから読み込んだデータでもできるかどうか試しましたが、以下のようにエラーが出てしまいました。
164
+
165
+
166
+
167
+ pandasのオブジェクトをそのまま渡しているからですね。
168
+
169
+ 個人的にはpandasどころかcsvもいらないと思います。テキストファイルで良いのでは。
170
+
171
+
172
+
173
+ > 単語を英語にした場合、jaconvは使えないため、エラー処理に困る
174
+
175
+
176
+
177
+ [str.isalpha](https://docs.python.jp/3/library/stdtypes.html#str.isalpha)を使えば...
178
+
179
+ ```Python
180
+
181
+ >>> 'いぬ'.isalpha()
182
+
183
+ True
184
+
185
+ >>> 'dog'.isalpha()
186
+
187
+ True
188
+
189
+ ```
190
+
191
+
192
+
193
+ **えっ?**
194
+
195
+ [Qiita - [修正] Python 文字列の英数字判定でハマった](https://qiita.com/fujiy/items/f738aa9d0bb7427e07a4)
196
+
197
+
198
+
199
+ こう書かねばならないようです。
200
+
201
+ ```Python
202
+
203
+ >>> 'いぬ'.encode('utf-8').isalpha()
204
+
205
+ False
206
+
207
+ >>> 'dog'.encode('utf-8').isalpha()
208
+
209
+ True
210
+
211
+ ```

3

追記

2018/06/18 06:45

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -125,3 +125,31 @@
125
125
 
126
126
 
127
127
  良い感じですね。
128
+
129
+
130
+
131
+ 追記2
132
+
133
+ ---
134
+
135
+ これ、『政府の犬』とかそっちの方の『いぬ』ですね...
136
+
137
+
138
+
139
+ ```Python
140
+
141
+ >>> wn.synsets('いぬ', lang='jpn')
142
+
143
+ [Synset('spy.n.01')]
144
+
145
+ >>> wn.synsets('spy')
146
+
147
+ [Synset('spy.n.01'), Synset('spy.n.02'), Synset('descry.v.01'), Synset('spy.v.02'), Synset('spy.v.03'), Synset('spy.v.04')]
148
+
149
+ >>>
150
+
151
+ >>> wn.synsets('イヌ', lang='jpn')
152
+
153
+ [Synset('dog.n.01')]
154
+
155
+ ```

2

修正

2018/06/18 04:40

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -15,8 +15,6 @@
15
15
  ```
16
16
 
17
17
 
18
-
19
- ---
20
18
 
21
19
  返り値を見て、未登録の場合は別フローに入るべきかと。
22
20
 
@@ -96,7 +94,11 @@
96
94
 
97
95
 
98
96
 
97
+ print(f'Unknown word: {datum}.')
98
+
99
+
100
+
99
- print(*data_with_syn, sep='\n') # [('いぬ', Synset('spy.n.01'))]
101
+ print(*data_with_syn, sep='\n')
100
102
 
101
103
  ```
102
104
 

1

追記

2018/06/18 04:37

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -49,3 +49,77 @@
49
49
 
50
50
 
51
51
  『いぬ』しかないですね。
52
+
53
+
54
+
55
+ 追記
56
+
57
+ ---
58
+
59
+ [jaconv](https://pypi.org/project/jaconv/)という良さげなモジュールがあったので、使ってみました。
60
+
61
+ ```Python
62
+
63
+ from nltk.corpus import wordnet as wn
64
+
65
+ from jaconv import hira2kata
66
+
67
+
68
+
69
+ data = ['りんご', 'いぬ', 'いちご', 'くま', 'みかん', 'ねこ']
70
+
71
+ data_with_syn = []
72
+
73
+
74
+
75
+ for datum in data:
76
+
77
+ ret = wn.synsets(datum, lang='jpn')
78
+
79
+ if ret:
80
+
81
+ data_with_syn.append((datum, ret[0]))
82
+
83
+ continue
84
+
85
+
86
+
87
+ datum = hira2kata(datum)
88
+
89
+ ret = wn.synsets(datum, lang='jpn')
90
+
91
+ if ret:
92
+
93
+ data_with_syn.append((datum, ret[0]))
94
+
95
+ continue
96
+
97
+
98
+
99
+ print(*data_with_syn, sep='\n') # [('いぬ', Synset('spy.n.01'))]
100
+
101
+ ```
102
+
103
+
104
+
105
+ **標準出力**
106
+
107
+ ```plain
108
+
109
+ ('リンゴ', Synset('apple.n.01'))
110
+
111
+ ('いぬ', Synset('spy.n.01'))
112
+
113
+ ('イチゴ', Synset('strawberry.n.01'))
114
+
115
+ ('クマ', Synset('bear.n.01'))
116
+
117
+ ('ミカン', Synset('orange.n.01'))
118
+
119
+ ('ネコ', Synset('cat.n.01'))
120
+
121
+ ```
122
+
123
+
124
+
125
+ 良い感じですね。