-ええ、ビエン、月の王子。 Gêneset Lucques ne sont plus que des apanages、des Estates、de la famille Buonaparte。 Non、je vouspréviensque si vous ne me dites pas que nous avons la guerre、si vous vous permettez encore de pallier toutes les infamies、toutes lesatrocitésde cet Antichrist(ma parole、j'y crois)-je ne vous connais plus 、vousn'êtesプラスmon ami、vousn'êtesプラス私の忠実な奴隷、comme vous dites 1.まあ、こんにちは、こんにちは。 Je vois que je vous fais peur 2、座って話す。
トム・ファースト
パート1。 アンナ・カレーニナ
最近、ハブでこの記事に出会いました: https : //habrahabr.ru/post/342738/ 。 そして、私は単語の埋め込み、Python、gensim、word2vecについて書きたいと思いました。 このパートでは、基本的なw2vモデルのトレーニングについて説明します。
それでは、始めましょう。
- anacondaをダウンロードします。 インストール。
- また、Visual StudioのC / C ++ツールも必要です。
- gensimをインストールします。 c ++が必要なのは彼のためです。
- nltkをインストールします。
- インストールするときは、標準インタープリター用ではなく、Anaconda用のライブラリをダウンロードすることを忘れないでください。 そうしないと、すべてが失敗します。
- TXTでAnna Kareninaをダウンロードしてください。
- ファイルを開いて、そこから広告とヘッダーを切り取ることをお勧めします。 次に、
utf-8
形式で保存します。 - 仕事に取り掛かることができます。
まず、nltkのデータをダウンロードします。
import nltk nltk.download()
開いたウィンドウですべてを選択し、コーヒーを飲みに行きます。 約30分かかります。
デフォルトでは、ロシア語の言語ライブラリはそうではありません。 しかし、職人は私たちのためにすべてをしました。 https://github.com/mhq/train_punktをダウンロードして、すべてをフォルダーに抽出します
C:\Users\<username>\AppData\Roaming\nltk_data\tokenizers\punkt
および
C:\Users\<username>\AppData\Roaming\nltk_data\tokenizers\punkt\PY3
Nltkを使用して、テキストを文章に分割し、文章を単語に分割します。 驚いたことに、それはすべて非常に高速に動作します。 設定は十分です。カップルはすでに通常のコードを少なくとも1行書いています。
スクリプトとデータがあるフォルダーを作成します。 環境を作成します。
conda create -n tolstoy-like
アクティベート。
activate tolstoy
そこでテキストをスローします。 ファイルにanna.txt
ましょう
PyCharm所有者の場合、環境を作成せずに、プロジェクトを作成し、インタプリタとしてアナコンダを選択するだけです。
train-I.py
スクリプトを作成します。
依存関係を接続します。
テキストを読んでください。
次にロシア提案のトークナイザーの番です。
def tokenize_ru(file_text):
これについて詳しく説明します。 最初の行では、文(文字列)を単語(文字列の配列)に分割します。 次に、何らかの理由でnltkが別の単語として取り出す句読点を削除します。 言葉を止めましょう。 これらは私たちのモデルが利益をもたらさない言葉であり、メインテキストからそれをノックアウトするだけです。 これらには、間投詞、接続詞、一部の代名詞、および一部の人に愛されている寄生虫が含まれます。 次に、この小説の端にある引用符を削除します。
ここで、テキストを文章に分割し、文章を単語の配列に分割します。
sentences = [tokenize_ru(sent) for sent in sent_tokenize(text, 'russian')]
興味のある方のために、オファーの数とそれらのいくつかを導き出します。
print(len(sentences))
次に、モデルのトレーニングを開始します。 30分もかからないのではないかと心配しないでください-gensimの20024文が吐き出されます。
次に、モデルをファイルに保存します。
ファイルを保存します。 開始するには、PyCharmまたはSpyderで作業している人のために、実行をクリックします。 ノートブックまたは別のエディターから手動で書き込む人は、Anaconda Promtを起動する必要があります(これはメニューの検索にこれを駆動するのに十分です)、スクリプトでディレクトリに移動し、コマンドを実行します
python train-I.py
できた これで、word2vecを教えたことを誇らしげに言うことができます。
パート2。 戦争と平和
どんなに頑張っても、アンナ・カレーニナはモデルを教えるのに十分ではありません。 したがって、著者の2番目の作品である戦争と平和を使用します。
こちらからもTXT形式でダウンロードできます。 使用する前に、2つのファイルを1つにマージする必要があります。 最初の章のディレクトリにwar.txt
呼び出しwar.txt
。 gensimを使用する利点の1つは、ロードされたモデルを新しいデータで完成できることです。 これが私たちがやることです。
train-II.py
スクリプトを作成する
この部分は新しいものではないので、説明する必要はないと思います。
次に、モデルをロードし、彼女の新しいデータをフィードします。
ここで少し停止します。 total_examples
は単語の数を設定します。この場合、これは新しいものを含むモデル辞書全体( model.corpus_count
)です。 `epochs
数の反復。 正直なところ、ドキュメントからmodel.iter
意味がわかりません。 誰が知っているか、コメントに書いてください-私はそれを修正します。
もう一度保存します。
実行することを忘れないでください。
エピローグ。 テストはどこにありますか?
彼らはそこにいません。 そしてまだ。 モデルはまだ完全ではなく、率直に言って、ひどいです。 次の記事では、修正方法を確実に説明します。 しかし最後に:
PS
実際、すべてがそれほど悪いわけではありません。 結果の辞書には、約5,000の単語とその依存関係および関係が含まれています。 次の記事では、より高度なモデル(15,000ワード)を提供します。 テキストの準備について詳しく説明します。 そして最後に、第3部では、最終モデルを公開し、ニューラルネットワークを使用してトルストイのスタイルでテキストを生成するプログラムの作成方法を説明します。
参照および使用された文献。
機械学習で頑張ってください。
私の記事を少し楽しんでいただけたでしょうか。