Giter VIP home page Giter VIP logo

nlp's Introduction

NLP(自然言語処理)

ここでは自然言語処理の技術と機械学習アルゴリズムを組み合わせ、有用な分析や予測を行う手法を記載する。

1.前処理(PreProcessing)

様々な機械学習タスクと同様に、自然言語(テキストファイル)を機械学習にかけるには、言語そのものをベクトル化(数値化)してあげる必要がある。 ここでは形態素解析とNgramという2つの前処理技術を紹介する。

形態素解析

テキストを分かち書きして、単語や品詞を抽出する手法。Mecabやnagisaなどのライブラリがある。単語を抽出するだけでなく、読み仮名なども取得することができるが、機械学習タスクで主に使うのは単語と品詞。 ライブラリのデフォルト辞書では適切に単語抽出できない場合、個別に辞書を作成してあげる必要がある。

辞書作成の目的

分類を行う場合、文書を解析して目的のクラスに正しく分類する為のキーワードを抽出する必要がある。 しかし、そのキーワードは多くの場合に一般的な単語ではないので、Mecabなどのデフォルト辞書に通しても正しく解析をしてくれない。 そこで、用途に合わせたオリジナル辞書を作成する必要が出てくる。 (ユーザー辞書の様なものだが、あまり多くの単語を登録すると単語同士の競合が発生したり重くなったりするので、案件別に分けるのがよい)

例えばの場合、下記の13クラスにを分類する必要があった。

これらのクラスに対応するキーワードを抽出する為、学習用のテキストデータを解析にかけ、候補となる単語を選択していく。 最初は正しく解析してくれないので、1つずつ重要と思われるキーワードを手作業で辞書登録していく。(これが一番めんどくさいが重要なザ・作業)

例えば、上記の~の場合、下記の様な単語を辞書登録しておくとその後の分析がはかどる。

N-gram

単語の分かち書きは行わず、文字数指定のみを行ってテキストを単語化する手法。 辞書を使わずに手軽に単語を網羅できるが、その分ノイズも増えやすい。また、単語数が多くなりやすい為、特徴量の絞り込みや圧縮が大変になる。

例:自然言語処理は作業が大変めんどくさい。 ユニグラム(1単語):自 然 言 語 処 理 は 作 業 が 大 変 め ん ど く さ い 。 バイグラム(2単語):自然 然言  言語 語処 処理 理は は作 作業 業が が大 大変 変め めん んど どく くさ い。 トライグラム(3単語):自然言  然言語 言語処 語処理...

形態素解析×N-gram

形態素解析とN-gramの合わせ技。形態素解析でそれなりに精度の良い分かち書きを行い、N-gramで単語数を指定して1つの固まりとしていく手法。 形態素解析単体では読み取れない単語の組み合わせによる文脈を抽出することが可能になる。

例:自然言語処理は作業が大変めんどくさい。 形態素解析:自然 言語 処理 は 作業 が 大変 めんどくさい 。 形態素解析×バイグラム(2単語):自然言語 言語処理 処理は は作業 作業が が大変 大変めんどくさい めんどくさい。

2. 特徴量エンジニアリング(Vectorize)

形態素解析やN-gramを使ってテキストから単語の抽出を行ったら、モデルに入力するための特徴量(ベクトル)を作成していく。

Bag of Words

TF-IDF

Word2Vec

Doc2Vec

コサイン類似度

例えばテキスト分類を行う場合、正解クラスのテキスト例と照合することで、各クラスのテキストとの類似度を求めることができる。 この類似度によって分類を行うことも可能だが、これを特徴量としてWord2Vecなどの特徴量と一緒に機械学習モデルへ入力する方がよりよい精度を得られる事が多い。 ※この使い方は機械学習手法としてはスタッキングに該当?

集合を使った共通語カウント

2つのSentenceの共通語をカウントし特徴量とする。Doc2Vecで十分かもしれない。

3. モデリング

特徴量の作成を行ったら、目的に合ったモデル(統計モデル、機械学習モデル、深層学習モデル)に入力を行い予測などを行っていく。

分類

LDA

nlp's People

Contributors

yryrgogo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.