質問編集履歴

1

解決策を追記

2018/10/06 05:14

投稿

Yukiya025
Yukiya025

スコア86

test CHANGED
File without changes
test CHANGED
@@ -193,3 +193,155 @@
193
193
 
194
194
 
195
195
  ```
196
+
197
+
198
+
199
+ # とりあえず手作業も挟んで解決xD
200
+
201
+ tiitoiさんの推測どおり、[googletrans](https://py-googletrans.readthedocs.io/en/latest/)を使っています。最初は300語だったので、それが一日に積み重なって1万5,000語超える。。。確かに50回のトライはしたかもorz でも「ひとつのテキストで15000」という部分が納得できない(・_・) そこは信頼すべきでないか。。。
202
+
203
+
204
+
205
+ > The maximum character limit on a single text is 15k
206
+
207
+
208
+
209
+ とりあえず現行のpythonの翻訳ライブラリ系はほぼgoogleを使っている、またロシアで主流の[Яндекс](https://yandex.ru/)も課金制のようなので、以下のやり方に切り替えました。
210
+
211
+
212
+
213
+ 1. `26and1.py`でロシア語の文章でよく使われる単語を頻出順に登場回数も含めてCSVに出力
214
+
215
+ 2. 手動で出力したCSVをlibreofficeで開く (OSがLinux Mintのため)
216
+
217
+ 3. 手動でロシア語の部分をコピー
218
+
219
+ 4. 手動で[Яндекс.Переводчик](https://translate.yandex.ru/)にペーストし、翻訳。
220
+
221
+ 5. 翻訳結果をコピーしてテキストファイルに保存。
222
+
223
+ 6. テキストファイルの中身を`26and1.csv`に追記
224
+
225
+
226
+
227
+ ```python
228
+
229
+ # 26and1.py
230
+
231
+ # -*- coding: utf-8 -*-
232
+
233
+ from nltk import FreqDist
234
+
235
+ import pymorphy2
236
+
237
+ import csv
238
+
239
+ import re
240
+
241
+
242
+
243
+ import del_words
244
+
245
+
246
+
247
+ downloadtxt = open('26and1.txt', 'r')
248
+
249
+ texts = downloadtxt.read()
250
+
251
+ texts = re.sub('[.,?!()\'—]', ' ', texts)
252
+
253
+ texts = texts.split()
254
+
255
+
256
+
257
+ analyzer = pymorphy2.MorphAnalyzer()
258
+
259
+
260
+
261
+ lemma_list = []
262
+
263
+ for text in texts:
264
+
265
+ lemma = analyzer.parse(text)[0].normal_form
266
+
267
+ lemma_list.append(lemma)
268
+
269
+
270
+
271
+ lemma_list = list(filter(lambda d: d not in (str(del_words.del_w)), lemma_list))
272
+
273
+ freqdist = FreqDist(lemma_list)
274
+
275
+ freqdist_list = freqdist.most_common(600)
276
+
277
+
278
+
279
+ with open('26and1.csv', 'w') as file:
280
+
281
+ writer = csv.writer(file, lineterminator = '\n')
282
+
283
+ writer.writerow(['Ру','Ном'])
284
+
285
+ for n in range(0, len(freqdist_list)):
286
+
287
+ writer.writerows([freqdist_list[n]])
288
+
289
+ pass
290
+
291
+ ```
292
+
293
+ `26and1.py`出力結果
294
+
295
+ ![before](6d80e48fd483c3e155ced9a29aaaf1af.png)
296
+
297
+
298
+
299
+ [Яндекс.Переводчик](https://translate.yandex.ru/)出力結果
300
+
301
+ (26and1_600JP.txt)
302
+
303
+ ![middle](c2a9ddcccdaa05c51e4126f8fc86beb9.png)
304
+
305
+
306
+
307
+ ```python
308
+
309
+ # addJP.py
310
+
311
+ import pandas as pd
312
+
313
+ import warnings
314
+
315
+ warnings.filterwarnings('ignore')
316
+
317
+
318
+
319
+ jp = open('26and1_600JP.txt', 'r')
320
+
321
+ jp_w = jp.read()
322
+
323
+ jp_w = jp_w.split()
324
+
325
+
326
+
327
+ csv_input = pd.read_csv('26and1.csv', sep=",")
328
+
329
+ csv_input['Яп'] = ''
330
+
331
+
332
+
333
+ for index, row in csv_input.iterrows():
334
+
335
+ csv_input['Яп'][index] = jp_w[index]
336
+
337
+
338
+
339
+ csv_input.to_csv('26and1.csv', index=False)
340
+
341
+ ```
342
+
343
+ addJP.py出力結果
344
+
345
+ ![yay](f575765535538dd683f07749a0569060.png)
346
+
347
+ しかしмочьは英語のcan相当だから「缶」ではなく「できる」なんだよな。。。そこはご愛嬌か^^; неяも多分訳が違って「彼女」みたいな感じだったと思う。。。そこは人力で修正^^ または最初からGoogle翻訳を使うか。