どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

NLP

PyTorchによる言語モデルの作り方

長年?PyTorchによる自然言語処理の実装方法がなんとなく分かっているようで分かっていない状態の私でしたが、、、 最近やっと実装方法が分かったので、でもやっぱり分かっていないので、本当に理解できているのかの確認の意味を込めて言語モデルの実装方法…

日本語のテキストコーパスから辞書を作るライブラリを作りたい⑥

NLP

前回書いた記事の続きです。 www.pytry3g.com 変更点 MeCabの対策 paddingについて __init__の変更 encode()の変更 関連記事 ソースコード 変更点 mecabを使って形態素解析をする際にエラーが出る場合があるので、それの対策とpaddingについて少し変更する。…

自然言語処理についてのまとめ記事

NLP

この記事では自然言語処理について自分が勉強したことを書いた記事についてまとめていきます。 単語の切り出し作業 形態素解析 MeCab N-gram 自然言語をベクトルにする Bag of Words TF-IDF Word2Vec GloVe テキスト分類 Cosine Similarity Deep Learning 言…

N-gramについて書いてみる

NLP

N-gramについて勉強したので、そのメモ。 この記事の最後にはpythonで実装したN-Gramを生成するコードを置いておきます。 はじめに N-gram 文字単位のN-gram unigram bigram trigram 単語単位のN-gram unigram bigram trigram 長所と短所 長所 辞書が必要な…

Cosine Similarityから似ている文書を見つける

NLP

ベクトル間の類似度を計測するひとつの手法にコサイン類似度(Cosine Similarity)というものがあります。 今回はこのscikit-learnで実装されているCosine Similarityを用いて以前収集したツイートに類似しているツイートを見つけてみたいと思います。 関連…

SCDVを使ったテキスト分類をしてみる

NLP

Word2Vecの単語ベクトルから、いい感じな文書ベクトルが作れるSCDVというのを使ってテキスト分類をしてみました。 SCDVって? 今回やること 今回使うもの 1. データの用意 Wikipediaの記事をダウンロード ツイートの用意 形態素解析 訓練データとテストデー…

GloVeを使ってみる。

NLP

単語分散表現のひとつGloVeを使ってみました。 この記事では理論については詳しく書きません、numpyを使って実装されているGloVeの使い方について書いていきます。 関連リンク GloVe 使い方 1. ライブラリとかの準備 2. データの用意 3. 単語辞書と共起ペア…

TF-IDFについて書いてみる。

NLP

主に情報検索の分野で使われるTF-IDFについて勉強したので、そのメモ。 さらに、scikit-learnで用意されているものを使ってTF-IDFを計算してみます。 環境 関連リンク TF-IDF Term Frequency Inverse Document Frequency Term Frequency - Inverse Document …

日本語のテキストコーパスから辞書を作るライブラリを作りたい⑤

NLP

前回書いた記事の続きです。 www.pytry3g.com 最近mecab-ipadic-NEologdを使えるようにしたので、JapaneseTextEncoderでも使えるようにしてみました。 www.pytry3g.com 変更点 __init__の変更 ソースコード 変更点 今回はNEologdを加えるだけです。 __init__…

JapaneseTextEncoderのまとめ記事。

NLP

この記事では日本語のテキストコーパスから辞書を作るライブラリJapaneseTextEncoderについての記事をまとめていきます。 環境 その① その② その③ その④ その⑤ その⑥ ソースコード text_encoder.py ソースコード reserved_tokens.py 環境 私の実行環境です。…

日本語のテキストコーパスから辞書を作るライブラリを作りたい④

NLP

この記事は前回書いた記事の続きになります。 www.pytry3g.com 前回JapaneseTextEncoderにいくつかの機能を追加しましたが、JapaneseTextEncoderを使って言語モデルやSeq2Seqを実装をするにあたり改善すべき点がありそうなので、それらについてコードの変更…

日本語のテキストコーパスから辞書を作るライブラリを作りたい③

NLP

この記事は前回書いた記事の続きです。 www.pytry3g.com 前回はJapaneseTextEncoderに指定した品詞を辞書に加えないように改良しました。 今回は以下の4つの点をJapaneseTextEncoderに加えてみます。 データセットの用意 パディング(padding) ミニバッチ…

日本語のテキストコーパスから辞書を作るライブラリを作りたい②

NLP

前々回の記事でTensorFlowを使ってテキスト分類をした結果、あまりうまくいきませんでした。原因として助詞や助動詞といった、テキストを分類する上であまり意味のなさそうなものがあるからかなと感じました。 そこで今回は以前作ったJapaneseTextEncoderに…

日本語のテキストコーパスから辞書を作るライブラリを作りたい

NLP

DeepLearningを使って自然言語処理をする際に、今まで毎回毎回テキストから辞書を作るコードをゼロから書いてきました。 毎回面倒に感じていたので、今回テキストを用意したら一瞬で辞書を作ってくれるプログラムを書いてみました。 環境 作ったもの 使い方 …

gensimのWord2Vecを使ってみる。

gensimのWord2Vecの使ってみたので、そのメモ。 今回はWikipediaの文章を使ってやってみますが、すぐに学習結果を知りたかったので少ないデータで学習をしています。 環境 データの用意 ライブラリのインポート Wikipediaの記事をダウンロード BeautifulSoup…

PyTorch-NLPを使ってみる

PyTorch-NLPを使ってみました。 PyTorchを使って自然言語処理をするときに便利なライブラリ(※ただし、英語に限る。) 日本語を扱う場合はあまり使えないかもしれません。日本語の資料もないし… この記事ではPyTorch-NLPで日本語を扱うために自分が学んだこ…

gensimとPyTorchを使ったlive doorニュースコーパスのテキスト分類

NLP

今回はgensimとPyTorchを使ってニュース記事の分類をやってみます。 環境 データの用意 前処理 単語辞書を作る データの変換 ネットワークの定義 学習 テスト おわり 環境 Windows10 Python 3.6 PyTorch 0.2 gensim 2.3.0 MeCab データの用意 ここにあるー>…

Bag of Wordsについて書いてみる

NLP

Bag of Wordsについて書いてみます。 ほとんどの機械学習は入力として数値データを与えなければなりません。そのため、自然言語処理において自然言語で書かれたデータを何らかの形で数値に変換する必要があります。Bag of Wordsはそのための一つの方法になり…

RNNを使った文章の自動生成

NLP

この記事ではRNNによる言語モデルを使った文章生成の方法(主にプログラム)について書いてみます。 はじめに 環境 実行環境 必要なライブラリなど 1. Wikipediaからデータを取ってくる ライブラリのインポート Wikipediaの記事をダウンロード 関連記事 2. …

PyTorchを使ってSMSSpamCollectionの分類をしてみる。(2)

NLP

前回の続き、今回はTFIDFを使ってスパム分類をしてみる。 pytry3g.hatenablog.com 前準備 TFIDF Training 結果 コード 前準備 import argparse import codecs import string import numpy as np from nltk import word_tokenize from sklearn.feature_extrac…

UbuntuでMeCabを使ってみる

NLP

前回は最低限の設定をしたので今回はMeCabを使えるように設定していく。 pytry3g.hatenablog.com MeCab インストール コマンドライン プログラム MeCab MeCabとは形態素解析(テキストから単語を切り出して、単語の役割を解析する技術)をするためのツールで…

PyTorchを使ってSMSSpamCollectionの分類をしてみる。

NLP

環境 前準備 データのダウンロード データの中身 データの前処理 データの分割 正規化 Bag of Words データの分割 Training ネットワークの定義 パラメータの設定 学習 Test 結果 コード 環境 python 3.6.2 Anaconda 4.3.27 Windows10 scikit-learn 0.19.0 n…