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

質問編集履歴

1

解決策を追記

2018/10/06 05:14

投稿

Yukiya025
Yukiya025

スコア86

title CHANGED
File without changes
body CHANGED
@@ -95,4 +95,80 @@
95
95
 
96
96
  csv_input.to_csv('26and1.csv', index=False)
97
97
 
98
- ```
98
+ ```
99
+
100
+ # とりあえず手作業も挟んで解決xD
101
+ tiitoiさんの推測どおり、[googletrans](https://py-googletrans.readthedocs.io/en/latest/)を使っています。最初は300語だったので、それが一日に積み重なって1万5,000語超える。。。確かに50回のトライはしたかもorz でも「ひとつのテキストで15000」という部分が納得できない(・_・) そこは信頼すべきでないか。。。
102
+
103
+ > The maximum character limit on a single text is 15k
104
+
105
+ とりあえず現行のpythonの翻訳ライブラリ系はほぼgoogleを使っている、またロシアで主流の[Яндекс](https://yandex.ru/)も課金制のようなので、以下のやり方に切り替えました。
106
+
107
+ 1. `26and1.py`でロシア語の文章でよく使われる単語を頻出順に登場回数も含めてCSVに出力
108
+ 2. 手動で出力したCSVをlibreofficeで開く (OSがLinux Mintのため)
109
+ 3. 手動でロシア語の部分をコピー
110
+ 4. 手動で[Яндекс.Переводчик](https://translate.yandex.ru/)にペーストし、翻訳。
111
+ 5. 翻訳結果をコピーしてテキストファイルに保存。
112
+ 6. テキストファイルの中身を`26and1.csv`に追記
113
+
114
+ ```python
115
+ # 26and1.py
116
+ # -*- coding: utf-8 -*-
117
+ from nltk import FreqDist
118
+ import pymorphy2
119
+ import csv
120
+ import re
121
+
122
+ import del_words
123
+
124
+ downloadtxt = open('26and1.txt', 'r')
125
+ texts = downloadtxt.read()
126
+ texts = re.sub('[.,?!()\'—]', ' ', texts)
127
+ texts = texts.split()
128
+
129
+ analyzer = pymorphy2.MorphAnalyzer()
130
+
131
+ lemma_list = []
132
+ for text in texts:
133
+ lemma = analyzer.parse(text)[0].normal_form
134
+ lemma_list.append(lemma)
135
+
136
+ lemma_list = list(filter(lambda d: d not in (str(del_words.del_w)), lemma_list))
137
+ freqdist = FreqDist(lemma_list)
138
+ freqdist_list = freqdist.most_common(600)
139
+
140
+ with open('26and1.csv', 'w') as file:
141
+ writer = csv.writer(file, lineterminator = '\n')
142
+ writer.writerow(['Ру','Ном'])
143
+ for n in range(0, len(freqdist_list)):
144
+ writer.writerows([freqdist_list[n]])
145
+ pass
146
+ ```
147
+ `26and1.py`出力結果
148
+ ![before](6d80e48fd483c3e155ced9a29aaaf1af.png)
149
+
150
+ [Яндекс.Переводчик](https://translate.yandex.ru/)出力結果
151
+ (26and1_600JP.txt)
152
+ ![middle](c2a9ddcccdaa05c51e4126f8fc86beb9.png)
153
+
154
+ ```python
155
+ # addJP.py
156
+ import pandas as pd
157
+ import warnings
158
+ warnings.filterwarnings('ignore')
159
+
160
+ jp = open('26and1_600JP.txt', 'r')
161
+ jp_w = jp.read()
162
+ jp_w = jp_w.split()
163
+
164
+ csv_input = pd.read_csv('26and1.csv', sep=",")
165
+ csv_input['Яп'] = ''
166
+
167
+ for index, row in csv_input.iterrows():
168
+ csv_input['Яп'][index] = jp_w[index]
169
+
170
+ csv_input.to_csv('26and1.csv', index=False)
171
+ ```
172
+ addJP.py出力結果
173
+ ![yay](f575765535538dd683f07749a0569060.png)
174
+ しかしмочьは英語のcan相当だから「缶」ではなく「できる」なんだよな。。。そこはご愛嬌か^^; неяも多分訳が違って「彼女」みたいな感じだったと思う。。。そこは人力で修正^^ または最初からGoogle翻訳を使うか。