Skyeng APIコンテスト-最初の参加者











1か月前、辞書のAPIを開き、すべてのユーザーをアプリケーションとサービスで使用するように招待し、開発者間の競争を発表しました。 それ以来、いくつかの既製のソリューションを含む18の競争力のあるアプリケーションを受け取りました。 今日、私たちはブログで4人の著者に彼らの製品について話す機会を与えることにしました(そしてコメントします)。







コンテストが発表されたエコシステムに関する投稿を見逃した場合は、ここにリンクがあります。 当時、我々はまだ競争の条件に準備ができていませんでした- ここにあります。 コンテストの賞金は20万ルーブルです。新しいアプリケーションまたはサービスの開発者のお金は不要です。







さて、今-最初の参加者と知り合いになります。







ユージーンクリリン- レニーイングリッシュボット



Lennyは、ユーザーが1日に10語で語彙を補充できるようにするチャットボットです。 CAは、現在英語を学習している人、または以前に英語を勉強したことがある人です。 うまく話し、読みやすく、他の人を理解し、ただ考えるためには、大きな語彙が必要です。







言葉が忘れられないように、それらは記憶の中で定期的に「リフレッシュ」されなければなりません。 私たちは遠くまで行かず、エビングハウスの忘却曲線に基づいた反復アルゴリズムを構築しました。 実際、これは、ユーザーが30分、1日、1週間、1か月、1年で単語を繰り返すことを意味します。 このようにして、単語は長期記憶に固定されます。 そして、適切なタイミングで、それらを取り出してそこから適用できます。







次にコンテンツについて。 コンテストの開始前には、すでに10,000語のベースがありました。 そして、Skyengがベースをさらに改善する機会を提供するとき、それを使用する必要があります。 必要なものをすべて別のファイルに受け​​取って保存し、それを行いました。







すなわち:







使用例
import requests import time from content import dictionary def skyeng_word(word): url = "http://dictionary.skyeng.ru/api/public/v1/words/search?_format=json&search={}".format(word) response = requests.get(url) try: ids = response.json()[0]['meanings'][0]['id'] return skyeng_meaning(ids) except: return None def skyeng_meaning(ids): url = "http://dictionary.skyeng.ru/api/public/v1/meanings?_format=json&ids={}".format(ids) response = requests.get(url) return response.json()[0]['examples'][0]['text'] def get_example(word): example = skyeng_word(word) if example is not None: return example else: return '!!! {} !!!'.format(word) def add_example(): i = 1 while i <= 10000: time.sleep(1) example = get_example(dictionary[i]['word']) with open('examples.py', 'a') as file: file.write("{}: \"{}\"\n".format(i, example)) print(i) i += 1 if __name__ == '__main__': add_example()
      
      





定義
 import requests import time from content import dictionary def skyeng_word(word): url = "http://dictionary.skyeng.ru/api/public/v1/words/search?_format=json&search={}".format(word) response = requests.get(url) try: ids = response.json()[0]['meanings'][0]['id'] return skyeng_meaning(ids) except: return None def skyeng_meaning(ids): url = "http://dictionary.skyeng.ru/api/public/v1/meanings?_format=json&ids={}".format(ids) response = requests.get(url) return response.json()[0]['definition']['text'] def get_definition(word): definition = skyeng_word(word) if definition is not None: return definition else: return '!!! {} !!!'.format(word) def add_definition(): i = 1 while i <= 10000: time.sleep(1) definition = get_definition(dictionary[i]['word']) with open('definitions.py', 'a') as file: file.write("{}: \"{}\"\n".format(i, definition)) print(i) i += 1 if __name__ == '__main__': add_definition()
      
      





そして単語の発音
 import requests import time from content import dictionary def skyeng_word(word): url = "http://dictionary.skyeng.ru/api/public/v1/words/search?_format=json&search={}".format(word) response = requests.get(url) try: voice_url = "http:{}".format(response.json()[0]['meanings'][0]['soundUrl']) return requests.get(voice_url) except: return None def get_voice(): i = 1 while i <= 10000: time.sleep(1) voice = skyeng_word(dictionary[i]['word']) file_name = '{}.ogg'.format(i) if voice is not None: with open(file_name, 'wb') as file: file.write(bytes(voice.content)) print(i) i += 1 if __name__ == '__main__': get_voice()
      
      





次に、現在のデータベースをすべて保存して更新しました。







毎回APIにアクセスするのではなく、コンテンツを保存した理由を説明する価値はないと思います。 この方法は高速です。 そして、ボットの動作が速いほど、ユーザーの満足度は高くなります。







Habréでのデビューを格言で終えたいと思います。 それは私たちの小さなチームの哲学を反映しています。「言葉は刺激を与え、言葉は破壊されます。 彼らは学ぶことが重要です。」







製品を改善してくれたSkyengに感謝します。 幸運を祈ります!







Skyeng私たちはLennyEnglishBotボットが大好きです。これはミニマルで控えめで、3つのプラットフォーム(Telegram、Facebook、Viber)で動作します。 電話に不要なアプリケーションを配置したくない、または配置できない場合-これは、エントリのしきい値が最小です。 私たちのエコシステムでは、そのような製品が非常に必要でした。







ただし、問題は、このボットがエコシステムに完全に統合されていないことです。 著者はそこで1万語の固定セットを運転し、このセットに定義を引きました。 任意の単語を訓練する方法はなく、私たちにとって最も重要なことは、Vimboxで学習するために取った単語を訓練する方法がないことです。 ボットの将来のバージョンでは、これがすべて考慮されることを願っています。なぜなら、繰り返しますが、私たちは本当にそれが本当に好きだからです。







ネイルガリアスカロフ-readore.io



readoreは、オーディオトラックと同期した書籍のコレクションです。 各本には難易度のレベルが割り当てられており、言語習熟度に合わせて文学を選択することが容易になります。 読むとき、あなたはすぐになじみのない単語を翻訳し、暗記のための単語のリストに追加できます。 すべての本のこの瞬間からこの単語が強調表示され、日中に「単語翻訳」という通知が送られます。









このアプリケーションは、スペイン語を学ぶために紙で縛られたマルケスを購入した競争の前から実装されていました。 その後、お気に入りの本で外国語を学ぶというアイデアが生まれました。







SkyEng APIを使用すると、アプリケーションがウクライナで再び機能するようになります(以前はYandex.Slovarを使用していました)。ただ、無料の代替手段を探していました。 さて、今、ユーザーの多くの要求によると、readoreはオフライン辞書を誇っています。







Skyengこのアプリが気に入りました。 かわいい、ブックメイトに似ています。 一部の書籍には、声優が組み込まれています。 組み込みの辞書と翻訳者は、学習する単語をマークできます。 そして、最良の部分は、近い将来、私たちの学校の生徒がモバイルアプリケーションの単語に学習用の単語を追加する機会を持つことです。







ドミトリー・サドヴニコフ- エンワード



私は英語を勉強して3年になりますが、その前は映画を見て、オリジナルの文学を読むことを夢見ていました。 夢は叶いましたが、新しい言葉を思い出すのは難しいです。私が知らない言葉は常に出くわしています。









私はかつてギークタイムに関する記事を読み、そこからサイトtatoeba.orgについて学びました。 そこから文章のリストをアップロードし、それを解析して最も一般的な単語を選択した後、英語だけに限定しないことに決めました。 その結果、独自のデータベースが作成されました。これは、350万の文、30の言語で50万語、エスペラントも含みます。 学習用の単語を追加し、学習済みのマークを付けることができるWebアプリケーションを作成しました。 単語は、短いフレーズで繰り返して記憶されます。







フレーズを完全に転載する必要があるトレーニングモードがあります(同時に、ブラインドタイピングをトレーニングできます)。 学習用のテキストをダウンロードできます。通常、AJ Hogeのレッスンのテキストを使用し、解析します。出力は、このテキストの出現頻度でソートされた単語のリストです。 このアプリケーションは外国語の初心者には適していません。ここでは文法のレッスンはありません。







最近、Skyeng APIをqtip jQueryプラグインと組み合わせて接続しました。英語の単語をクリックすると、Skyengにajaxリクエストが送信され、音声の演技とともに単語の翻訳が表示されます。 私は長い間そのような機能を接続したいと思っていましたが、私の手は届きませんでしたが、Skyengでは文字通り1時間かかりました。 近い将来、ユーザーがSkyengアカウントに追加した単語を学習できるようになります。これにより、コンバージョンが増加することを願っています。







オープンソースプロジェクトは完全に無料です。多くのユーザーがいる場合は、有料の機能を導入する必要があり、サーバーに料金を支払う必要がありますが、基礎は誰でも利用できます。

Ruby on Railsで書かれており、機能、デザイン、マーケティングに関するアイデアを誰でも提供できます。一般的に、プロダクトマネージャーを拒否しません。







プロジェクトコード







SkyengEnwordsは、学習する単語のリストを個別に作成する機能を提供します。これは、Wordsアプリケーションのユーザーが積極的に求めている機能です。 ただし、Wordset Generatorとは異なり、テキストパーサーは難易度別に単語を並べ替える方法を知らないため、出力は、誰もが知っている記事、代名詞、単語で始まる非常に大きなリストです。 したがって、勉強に必要な語彙の抽出に時間を費やす必要があります。 Enwordsの重要な機能はオープンソースです。







UPD:重要な新機能-アカウントからSkyengに単語を追加する機能。「Skyeng設定」フィールドで電子メールを指定するだけです。 いいね!







ドミトリー・ラパエフ- 他の言葉



アプリケーションのアイデアは次のとおりです。取得した値の詳細な調査のために、翻訳オプション(オフライン)を保持しながら、単語のオンライン翻訳者(フレーズ)を作成します。 すなわち 語彙の「偶然の」拡大を意味します。







Skyeng APIは現在、クエリの実装として使用されています(「検索」メソッド:dictionary.skyeng.ru/api/public/v1/words/search)。 許可なく機能し、ロシア語と英語の両方の単語に対して結果が提供されることを嬉しく思いました。 クエリ結果の構造から、アプリケーションの単純な実装は、「受信した(要求による)単語のリスト」と「値の表示(翻訳オプション)」の2つのフラグメントの形式で発生しました。 取得した値は、音声ファイルをダウンロードして文字起こしを行う機能を備えた「ビジュアルカード」の形式で表示されます。 検索クエリの結果はアプリケーションデータベースに保存され(2つのリンクテーブルで構成され、ORM Liteが使用されます)、オーディオファイルと画像はアプリケーションディレクトリに保存されます。







各単語(クエリ結果)には、次のカテゴリのいずれかが割り当てられます。

1)「学習用」、

2)「学習済み」、

3)「お気に入り」、

4)「表示済み」(翻訳値を表示する単語を選択したときに割り当てられます);

「調査済み」テストタスクに移行するとき:5つの提案された翻訳オプションの正しいものを選択し、「品詞」フィールドが一致したときに「値」テーブルからランダムに選択します。







Skyeng「More Words」は基本的に、Wordsアプリの簡略化された対応物です。 それは私たちの生態系にはあまり合いませんが、私たちはその存在を喜んでいます。私たちは多様性と選択のためです。







Skeyngコンテストは継続されます。APIを使用して、さらに興味深い開発が行われることを期待しています。 アイデアや完成したアプリケーションがある場合は、アプリケーションに記入してください。







さて、Skyeng内でアプリケーションを開発したい場合は、いつものように、 興味深い求人があります。







更新しました。 APIに新しいメソッドを追加しました。アプリケーションから単語を追加して、Wordsアプリケーションで学習できるようになりました。 リンクのAPIドキュメント: https : //dictionary.skyeng.ru/doc/api/external、https : //words.skyeng.ru/api/doc/external







更新しました。 2: コンテストの結果は別の記事で公開されます。








All Articles