NLP

torchtextを使った自然言語処理タスクの前処理

PyTorch: DatasetとDataLoader (画像処理タスク編) - け日記 にてDatasetとDataLoaderの使い方を紹介しました。 今回は自然言語処理のにフォーカスし、torchtextを使った自然言語処理 (NLP) タスクの前処理について整理します。 NLPタスクの前処理 大別する…

Sudachiベースの学習済みWord2Vecモデルを使う

お仕事でSudachiを使って形態素解析を行っているのですが、それと互換した単語埋め込みモデルが必要になりました。 Sudachiの開発元であるワークスアプリケーションズさんから、Sudachiで分かち書き・学習したWord2Vecモデルが提供されています。 コーパスと…

Keras: スパムメッセージをLSTMで分類する

KerasでRNN (LSTM) を実装し、スパムメッセージを分類してみます。 以前、同じデータセットに対してscikit-learnを使ってナイーブベイズで分類を行いましたが、いわばそのディープラーニング版となります。 scikit-learnでスパムメッセージを分類する(CountV…

日本語NLPライブラリ GiNZA で遊ぶ

つい最近、リクルートと国立国語研究所の共同研究のアウトプットとしNLPライブラリ GiNZA が公開されました。今回はこのGiNZAをお試ししてみます。 www.recruit.co.jp GiNZA GiNZAは日本語の自然言語処理の統合ライブラリです。 megagonlabs.github.io spaCy…

Pythonで形態素解析器Sudachiを使う (SudachiPy)

仕事でSudachiをお試しする機会がありましたので、基本的な使い方を備忘録として整理しておきます。 Sudachi Sudachiはワークスアプリケーションズさんで開発されたOSSで、日本語に特化した形態素解析器です。分かち書き・品詞付け・正規化を行います。 gith…

形態素解析前の日本語文書の前処理 (Python)

日本語の文書を扱っていますと、モデルやパラメータよりも、前処理を改善する方が精度が改善し、かつ、頑健になることがしばしばあります。 本投稿では形態素解析 (分かち書き) する前、つまり文字レベルでの前処理でよく使っているテクニックを紹介します。…

spaCyで英文の固有表現認識

今回はspaCyを使って英文の固有表現認識を行ってみます。 GiNZAを使った日本語の固有表現認識はこちら↓です。 ohke.hateblo.jp 固有表現抽出 固有表現認識 (named entity recognition: NER) は、文書から固有表現 (named entity) を抽出・分類することです。…

論文メモ: Latent Aspect Rating Analysis on Review Text Data: A Rating Regression Approach

Latent Aspect Rating Analysis on Review Text Data: A Rating Regression Approach (KDD'10) という論文について紹介します。 @inproceedings{Wang:2010:LAR:1835804.1835903, author = {Wang, Hongning and Lu, Yue and Zhai, Chengxiang}, title = {Late…

Python: LexRankで日本語の記事を要約する

仕事で行っているPoCの中で、文章の要約が使えるのではと思い、調査をし始めています。 今回はsumyのLexRankの実装を使い、過去の投稿を要約してみます。 LexRank LexRankは、抽出型に分類される要約アルゴリズムで、文書からグラフ構造を作り出して重要な文…

論文メモ: GloVe: Global Vectors for Word Representation

前々回の投稿でGloVeで単語ベクトルを計算しましたが、今回の投稿ではその提案論文を整理したいと思います。 nlp.stanford.edu ohke.hateblo.jp GloVe: Global Vectors for Word Representation @inproceedings{pennington2014glove, author = {Jeffrey Penn…

論文メモ: Distributed Representations of Words and Phrases and their Compositionality

前回の投稿で紹介したGloVeの論文を読もうと思ったのですが、先発のword2vecの論文をまだ読んでなかったので、先にそっちを読んだメモです。 なお、gensimのword2vecの実装を使った例を以前投稿してます。 ohke.hateblo.jp Distributed Representations of W…

GloVeで単語ベクトルを得る

単語ベクトル化モデルの一つであるGloVeを試してみます。 GloVe GloVeは単語のベクトル表現を得る手法の一つで、Word2Vecの後発となります。論文はこちらです。 nlp.stanford.edu Word2Vec (skip-gram with negative sampling: SGNS) では各単語から周辺単語…

論文メモ: Item2Vec: Neural Item Embedding for Collaborative Filtering

word2vecをリコメンデーションに応用した論文"Item2Vec: Neural Item Embedding for Collaborative Filtering"を読みましたので、そのメモとなります。 [1603.04259] Item2Vec: Neural Item Embedding for Collaborative Filtering 1. INTRODUCTION AND RELA…

LDAでブログ記事のトピックを抽出・分類する

今回はLDAを使って、京大ブログコーパスをトピック毎に分類できないか試みてみます。 LDA LDA(Latent Dirichlet Allocation, 潜在ディリクレ配分法)は、文書のトピック(文書の話題、カテゴリ、ジャンルとも言える)についてのモデルです。 初出は以下の論文で…

Word2Vecで京都観光に関するブログ記事の単語をベクトル化する

京都観光に関するブログ記事を使い、Word2Vecで単語のベクトル化します。 ベクトル化することで、例えば「紅葉」という言葉から紅葉の名所を列挙したり、「カップル」という言葉からデートコースを探したりできないか、というのを試みてみたいと思います。 W…

Python janomeのanalyzerが便利

前回の投稿でも形態素解析に利用したjanomeですが、形態素解析を単純にラッピングするだけでなく、いくつかシンプルで便利な機能も実装されています。 今回は、形態素解析以外の前処理も簡単に統合できるanalyzerについて紹介します。 前処理が必要なデータ …

Python 感情極性対応表とjanomeを使って日本語で良いニュースと悪いニュースの分類を試みる

日本語のニュース文章を、感情極性対応表とjanomeを使って、良いニュース・悪いニュースで分類してみます。 livedoorニュースコーパスのロード 今回は以下で提供されているlivedoorニュースコーパスの内、トピックニュースをデータセットとして使います。 ダ…