レオと英語字幕

こんにちは、Habrahabr!

私は長い間英語を勉強しており、理想を達成したいのですが、このプロセスは速くありません。 現時点では、私の英語レベルは話された言語をかなりよく認識できますが、今のところ、字幕で同じように映画を見ています。 それらがなくても、ビデオには私が知らない単語が含まれている可能性があり、一般的な意味は明確ですが、その単語が何であるかを知りたいです。







したがって、映画を見るとき、次の手順が取得されます。









それはかなり良いようですが、疲れます。 私は映画を継続的に見たいです。そして、あなたがすべての言葉が馴染みがあることを確かに知っているなら-字幕を拒否し、聞いて、同時に訓練してください。 この問題をどのように解決したか、読み進めてください。







開始する



これが、私が実装したシンプルなプロジェクトのためにアイデアが生まれた方法です。 なぜなら ほとんどの場合、私はpythonで作業しますが、選択は彼にかかっていました。 サイトの仕事を勉強したので、仕事に取り掛かりました。







最初の考えは簡単でした。辞書全体をダウンロードし、字幕からテキスト全体を定期的に引き出し、比較し、いわゆる未知の単語のパケットを発行します。 しかし、その後、大失敗が私を襲った。 英語では、そのようなものがあります- 補題 。 もちろん、私の言語辞書では、すべての単語がこの形式になっているわけではありません。すべての単語が字幕になっているわけではありません。 グーグルで、 nltkのようなライブラリを見つけました。 補題を得るには、動詞や名詞に引数を渡す必要がありました。 どこで何を確認するには? または、重い自転車を作成するか、...







予期しないニュース



lingualeoサーバーの回答を見ると、回答に補題があることがわかりました。 したがって、検索語と補題を比較することしかできず、一致した場合-これはまさに私が必要とするものであり、そうでない場合-別の要求を行います。 解決策が見つかりました。ビジネスに取り掛かることができますが、1つあります-ストップワードのようなものがまだあります。 これらは通常無視される単語です(しない、a、theなど)。 これらのリストはグーグル化されており、サイズが異なっており、どれを選択するかは明確ではありません。 拡張リストでは、理論的には、学習する必要のある単語が存在する場合があります。 そして、他の誰かが私の時間を使いたいと思ったら?







ユーザーは、自分の好みに応じて、このようなリストを自分で作成することが決定されました。







最初のステップ



最初の実装は、現在のユーザー辞書、翻訳オプション付き字幕に由来する単語、ストップワードを保持したjsonファイルのパックに基づいていました。 単語を追加/並べ替え/無視するために、何が何であるかがはっきりとわかるようにWebページを作成することにしました。 問題は明らかであり、私が選択したフラスコは新しい単語のリストをページ付けするように教えられる可能性がありました(1つの映画と1000から) SQLAlchemyを使用してsqliteを使用することを明確な良心をもって決定しました。







コードの例は提供しません。すべてのコードはgithubで見つけることができます(記事の最後のリンク)。ここでは作業のロジックのみを説明します。







どのように機能しますか?



そのため、最初の起動時に、電子メールとパスワードを指定する必要があります。正しい場合は保存します。 次に、辞書をポンピング/更新します-言語ごとに日付でソートされています。これは非常に便利です。新しいページごとにデータベースに追加された単語の数を保存するからです。 0の場合、単語はすべて保存されます。確かに、さらに2、3ページをダウンロードします。空の場合、すべてを更新しました。







さらに、テキストファイルが指定されている場合は、それを解析します。 ストップワード(ユーザーが無視する単語)のリストとの比較は2回です。 テキストファイルの解析時、および補題の受信時に、単語が変更された場合。 再びサーバーをレイプしないように作られました:)







ちなみに、ローカルにダウンロードした辞書をCSVに保存してAnkiにインポートすることができます。必要に応じて、 --savecsv



オプションを指定する必要があります。







新しい単語を表示するには、flaskを実行する必要があります。







 python3 server.py
      
      





localhostを開く:5000は単語のあるページを開きます。 それらはすぐに無視するか(ストップワードに追加)、Lingualeoのアクティブな辞書に追加できます。 誰かが必要とする場合、csvを保存するためのリンクを追加しました。ユースケース:不要な単語を無視し、同じAnkiにインポートするために必要な単語をファイルにアップロードします。 翻訳は、最大投票数のあるものが選択されます。







おわりに



ソースコードはgithubへのリンクから入手できます。提案、要望がある場合は、コメントまたはpullrequests / issuesへようこそ。

ご清聴ありがとうございました:)








All Articles