web-dev-qa-db-ja.com

機械学習と自然言語処理

機械学習と自然言語処理を勉強したい学生を知っていると仮定します。

どの特定のコンピュータサイエンスの主題に焦点を当てるべきであり、どのプログラミング言語がこれらのタイプの問題を解決するために特別に設計されていますか?

私はあなたの好きな主題やツールではなく、業界標準を探しています。

:PrologとMatlabを知っていると役立つかもしれないと思います。また、離散構造*、微積分、および統計を研究することもできます。

*グラフとツリー。関数:プロパティ、再帰的定義、再帰の解決。関係:プロパティ、同等性、半順序。証明技術、帰納的証明。カウント手法と離散確率。論理:命題論理、一階述語論理。正式な推論:自然演繹、解決。プログラムの正確性と自動推論へのアプリケーション。コンピューティングにおける代数的構造の紹介。

42
Stephano

この関連するstackoverflowの質問にはいくつかの良い答えがあります: 自然言語処理に興味のある人にとって良い出発点は何ですか?

これは非常に大きな分野です。前提条件は主に確率/統計、線形代数、および基本的なコンピューターサイエンスで構成されますが、自然言語処理では、最初にさらに集中的なコンピューターサイエンスのバックグラウンドが必要です(多くの場合、いくつかの基本的なAIをカバーしています)。特定の言語について:LISPが作成されました AI研究を行うための「後付け」として 一方、Prolog(正式なロジックにルーツを持つ)は特に自然言語処理を目的としており、多くのコースでProlog、Schemeが使用されます、Matlab、R、または別の関数型言語(たとえば、 OCamlはCornellのこのコースで使用されます )は、この種の分析に非常に適しているためです。

ここにいくつかのより具体的なポインタがあります:

機械学習の場合、 Stanford CS 229:Machine Learning は素晴らしいです:講義の完全なビデオを含むすべてが含まれています( iTunesで)、コースノート、問題セットなど、そしてそれは Andrew Ng によって非常によく教えられました。

前提条件に注意してください。

学生は、次のバックグラウンドを持っていることが期待されます。合理的に重要なコンピュータプログラムを書くのに十分なレベルの基本的なコンピュータサイエンスの原則とスキルの知識。基本的な確率論に精通していること。基本的な線形代数に精通していること。

このコースでは、Matlabおよび/またはOctaveを使用します。また、次の読み方をお勧めします(コースノート自体は非常に完全ですが)。

自然言語処理の場合、 スタンフォードのNLPグループ は多くの優れたリソースを提供します。入門コース スタンフォードCS 224:自然言語処理 含まれています すべての講義はオンライン 次の前提条件:

プログラミングと正式な構造に関する十分な経験。プログラミングプロジェクトはJava 1.5で記述されるため、Java(または自分で学習する意欲)の知識が必要です。人工知能の標準概念の知識インテリジェンスおよび/または計算言語学。ロジック、ベクトル空間、および確率に関する基本的な知識。

いくつかの推奨テキストは次のとおりです。

前提条件 計算言語学コース 基本的なコンピュータープログラミングとデータ構造の知識が必要であり、同じ教科書を使用します。必要な人工知能コース オンラインでも利用可能 と一緒に すべての講義ノート そして使用:

これは標準の人工知能のテキストであり、読む価値もあります。

私は [〜#〜] r [〜#〜] を機械学習に使用しており、本当にお勧めします。このために、私は 統計学習の要素 を見ることをお勧めします。その全文はオンラインで無料で入手できます。特定の機能については、CRANの 機械学習 および 自然言語処理 ビューを参照することをお勧めします。

54
Shane

私の推薦はこれらのいずれかまたはすべて(彼の量と関心のある分野に応じて)です:

計算言語学のオックスフォードハンドブック

The Oxford Handbook of Computational Linguistics
(出典: oup.com

統計的自然言語処理の基礎

Foundations of Statistical Natural Language Processing

情報検索の概要

Introduction to Information Retrieval

7
Fabian Steeg

スタンフォードCS224:自然言語処理 すでに言及されたコースには、 ビデオオンライン (他のコース資料に加えて)も含まれています。ビデオはコースのWebサイトにリンクされていないため、多くの人が気付かない可能性があります。

5
michau

おそらく&統計が最も重要な前提条件だと思います。特にガウス混合モデル(GMM)と隠れマルコフモデルHMM )は両方とも非常に重要です機械学習と自然言語処理(もちろん、これらの科目は、入門的な場合はコースの一部になる可能性があります)。

次に、基本的なCSの知識も役立ちます。たとえば、アルゴリズム形式言語、基本複雑さ理論。

5
3lectrologos

接尾辞木を含む文字列アルゴリズム。微積分と線形代数。さまざまな統計。人工知能最適化アルゴリズム。データクラスタリング技術...そして他の何百万ものもの。これは、あなたが何をしようとしているのかに応じて、現在非常に活発な分野です。

どの言語で操作するかは実際には重要ではありません。たとえば、PythonにはNLTKがあります。これは、計算言語学をいじくり回すための非常に優れた無料パッケージです。

5
San Jacinto

ジュラフスキーとマーティンのスピーチと言語の処理 http://www.Amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210/ とても良いです。残念ながら、ドラフトの第2版の章は、公開されたため、オンラインで無料ではなくなりました:(

また、あなたがまともなプログラマーであれば、NLPプログラムをいじくり回すのに早すぎることはありません。 NLTKが思い浮かびます(Python)。オンラインで無料で読める本が出版されています(OReillyによると思います)。

3
Yuvi Masory

Markdownと式文法(PEG)の解析の概要 投稿者 cletus 彼のサイト cforcoding はどうですか?

ANTLRは、自然言語処理を開始するのに適した場所のようです。私は専門家ではありません。

2
Binary Nerd

広い質問ですが、有限状態オートマトンと隠れマルコフモデルの知識が役立つと思います。それには、統計的学習、ベイズパラメータ推定、およびエントロピーの知識が必要です。

潜在的セマンティックインデックスは、多くの機械学習の問題で一般的でありながら最近使用されているツールです。いくつかの方法はかなり理解しやすいです。潜在的な基本的なプロジェクトがたくさんあります。

  1. ドキュメント/段落/文のクラスタリングのテキストコーパスで共起を見つけます。
  2. テキストコーパスの気分を分類します。
  3. ドキュメントに自動的に注釈または要約します。
  4. 別々のドキュメント間でrelationshipsを見つけて、ドキュメント間で「グラフ」を自動的に生成します。

編集:非負行列因子分解(NMF)は、その単純さと有効性のためにかなり人気が高まっているツールです。理解しやすいです。私は現在、音楽情報検索のためのNMFの使用を研究しています。 NMFは、テキストコーパスの潜在意味索引付けにも役立つことが示されています。これが1つの論文です。 [〜#〜] pdf [〜#〜]

2
Steve Tjoa

Prologは、学術的にのみ役立つだけであり、論理制約とセマンティックNLPベースの作業にも制限されます。 Prologはまだ業界に優しい言語ではないので、現実の世界ではまだ実用的ではありません。また、matlabは、科学的またはクオンツベースの作業を多く行っていない限り、アカデミックベースのツールでもあります。まず、「Norvig」の本を手に取ってAIの世界に入り、すべての分野で基礎を築きたいと思うかもしれません。いくつかの基本的な確率、統計、データベース、OS、データ構造、そしておそらくプログラミング言語の理解と経験を理解します。彼らは、AI技術が機能する理由と機能しない場所を自分たちで証明できる必要があります。次に、機械学習やNLPなどの特定の分野をさらに詳しく見ていきます。実際、norvigの本はすべての章の後に参考文献を提供しているので、すでに多くの参考資料が利用可能です。ガイダンスとして、インターネット、書籍、ジャーナルペーパーを介して利用できる参考資料がたくさんあります。この本を読むだけでなく、プログラミング言語でツールを作成して、「意味のある」結果を推定してみてください。学習アルゴリズムは実際に期待どおりに学習しましたか?そうでない場合は、どうすれば修正できますか?.

1
meme