1

意味のない英語のコンポーネントを識別するのに役立つアルゴリズムやライブラリがあるのでしょうか?例:非常に深刻文法エラー?もしそうなら、あなたはそれがどのように機能するか説明することができますか?それは私が実際にそれを実装したり、自分のプロジェクトに使ったりしたいからです。英語の文章で意味を持たないコンポーネントを特定する

ここでは、ランダムな例です:文で

:「私はハローなどのページので、ドアを閉めました。」

人間は、[so etc page hello]が意味をなさないことをすぐに特定できます。文字列が意味を持たず、文法エラーも含まれていることをマシンが指摘することは可能でしょうか?

このような解決策がある場合、その正確さはどれくらいですか?例えば、英語の文章のクリップが与えられていれば、そのアルゴリズムはどれほど意味のあるかを示すメジャーを返すか、そのクリップを修正することは可能ですか?どうもありがとうございました!

PS:CMUのリンク文法とNLTKライブラリを見てきました。しかし、私はパーサーが文を受け入れない場合、私がしたいことをやるために例えばリンク文法パーサをどのように使うべきかわからない、それをどのように調整してそれをどの部分に教えているのかわからないNLTKがそれをサポートしているかどうかは分かりません。

私が問題を解決するために持っていたもう一つの考えは、単語の組み合わせの頻度を見ることです。私は現在、非常に重大なエラーだけを修正することに興味があるので、 「重大エラー」とは、文のクリップ内の単語がほとんど一緒に使用されない場合、すなわち、コンボの頻度が文中の他のコンボの頻度よりもはるかに低い場合であると定義する場合。

たとえば、上記の例では、[so etc page hello]これら4つの単語は実際にほとんど一緒に発生しません。私のアイデアの一つの直感は、私がGoogleにこのようなコンボを入力したときから来ています。では、Googleのような頻度情報を提供するライブラリはありますか?そのような頻度は、単語コンボの正しさについての良いヒントを与えるかもしれない。

答えて

2

あなたが探しているものはlanguage modelだと思います。言語モデルは、あなたの言語で表示される単語kの各文に確率を割り当てます。最も単純な種類の言語モデルは、nグラムモデルです。文の最初の単語がiの場合、i+1番目の単語を確認する確率はn-1前の単語のみに依存します。例えば

は、バイグラムモデル(n=2)のために、文w1 w2 ... wkの確率は確率P(wi | w(i-1))を計算するには

P(w1 ... wk) = P(w1) P(w2 | w1) ... P(wk | w(k-1)). 

に等しく、あなただけのバイグラムの発生回数をカウントする必要がありw(i-1) wi大きなコーパスにはw(i-1)という単語が含まれています。

ここでは、件名に関する良いチュートリアルの論文です:A Bit of Progress in Language Modeling、Joshua Goodman。

+0

これはマルコフチェーンとも呼ばれます。以前私のコメントで述べたように、これは一般的なプログラミングの課題です。 – tripleee

+0

ありがとう!言語モデルは私に多くの洞察を与える! –

2

はい、このようなことがあります。

Wikipediaについて読むことができます。

hereの精度問題の一部についても読むことができます。

文章を決定した直後にどの部分が文法上の問題であるかを判断する限り、著者の意図した意味を知らなくてもほとんど不可能です。例えば、 "死体の上に"、 "死体の上に"としましょう。どちらも間違っていて、カンマを追加/削除するか、またはその場所を入れ替えて修正することができます。しかし、これらは非常に異なる意味になります(はい、2つ目は完全な文ではありませんが、文脈では容認できます)。

単語の数が限られているため、単語が有効かどうか(正しく入力されているかどうか)をチェックできます。しかし、無限の意味を持つ無限の文章があります。そのため、文章の意味がわからなくても文章の誤りを訂正する方法はありません。

+0

真実ですが、そのようなことが存在するかどうか、正確であるかどうかを質問するだけです。私は私の答えと2つのリンクがそれをかなりうまくカバーしていると思います。 – yoozer8

+0

まあ...私はもっと詳細なことを本当に期待しています....私はちょうど投稿を改訂しました... –

+1

@KelvinLeeと私は私の編集しました、もっと徹底的に見つけることを願っています – yoozer8

1

あなたが探しているのは、自然言語を処理して意味を抽出できる十分に確立されたライブラリです。

残念ながら、このようなライブラリはありません。自然言語処理は、おそらく想像がつくように、簡単な作業ではありません。それはまだ非常に活発な研究分野です。自然言語を理解するには多くのアルゴリズムとメソッドがありますが、私の知る限り、それらのほとんどは特定のアプリケーションや特定のタイプの単語に対してのみうまく機能します。

CMUのようなこれらのライブラリはまだかなり基本的なようです。あなたがしたいこと(英語の文章での誤りの特定など)はできません。あなたが提供するツール(文パーサーなど)を使用してそれを行うためのアルゴリズムを開発しなければなりません。

詳細についてはai-class.comをご覧ください。彼らには、言語と言葉の処理に関するいくつかのセクションがあります。

関連する問題