2

ある単語を考えて、その単語の最も頻繁な前任者と後継者のリストを英語で取得したいと思います。私は任意のコーパスでバイグラム分析を行うコードを開発し(私はエンロンの電子メールコーパスを使用しました)、最も頻繁な次の可能な単語を予測できますが、a)予測の動作/精度を確認したいので他の解決策が必要ですb )コーパスまたはデータセットベースのソリューションは、目に見えない単語のために失敗します

たとえば、「excellent」という単語を考えると、Excellentの前とExcellentの後に来る可能性が最も高い単語を取得したいと思います。

私の質問は、その目的のために特定のサービスまたはAPIが存在するかどうかです。

4

3 に答える 3

3

この問題の解決策は、コーパスベースの方法に縛られています。より大きなコーパスが必要なだけです。これを行う Web サービスやライブラリについては知りませんが、より大きなコーパスを取得する方法はいくつかあります。

  • Google は、Web の英語部分から収集したnグラムの膨大なコーパスを公開しました。これは言語データ コンソーシアム (LDC) から入手できますが、入手するには LDC のメンバーである必要があると思います。(大学は多いです。)
  • LDC のメンバーでない場合は、ウィキペディア データベース ダンプをダウンロードし( get enwiki)、予測子をトレーニングしてみてください。
  • たまたま Python を使用している場合は、NLTKで提供されるコーパス (およびツール) の優れたセットを確認してください。

<unseen>目に見えない単語の問題に関しては、トレーニングの前のように、特定のしきい値よりも発生頻度が低いすべての単語を特別なトークンに置き換えるなど、それに取り組む方法があります。そのため、評価が少し難しくなります。

于 2012-01-07T12:37:17.530 に答える
2

元の質問を読み直したところ、答えに気づきました。私の含まれているものはベースから外れました。元の人は、データセットを探すのではなく、単純なプログラミングの問題を解決したかっただけだと思います。

すべての異なる単語のペアをリストして数えると、そのリストの簡単な計算で質問に答えることができます.

もちろん、リストを生成するには多くの処理を行う必要があります。異なる単語の総数が 30,000 にも上る場合、10 億通りのペアが存在することは事実ですが、実際にはそれほど多くのペアがあるとは思えません。したがって、メモリ内 (またはディスク上) に巨大なハッシュ テーブルを持つプログラムを作成し、それらすべてをカウントすることができます。重要でないペアが必要ない場合は、スキャン中に重要度の低いペアを定期的にフラッシュするプログラムを作成できます。また、単語リストをセグメント化し、100 単語対残りの単語のペアを生成し、次の 100 単語などを生成し、パスで計算することもできます。

私の元の答えはここにあります。これは私自身の関連する質問であるため、残しておきます。

似たようなものに興味があります (単語の補完と句読点を提案する入力システムを作成していて、それを多言語にしたいと考えています)。

Google の ngram ファイルのダウンロード ページを見つけましたが、あまり良くありません。スキャン エラーでいっぱいです。'i' が '1' になり、単語が一緒に実行されるなど。うまくいけば、Google はそれ以来、スキャン技術を改善してきました。

just-download-wikipedia-unpack=it-and-strip-the-xml のアイデアは、私にとっては失敗です。私は高速なコンピューターを持っていません (へー、ここのアトム ネットブックと Android デバイスのどちらかを選択できます)。 . 3 ギガバイトの bz2 ファイルを解凍するのにどれくらいの時間がかかるか想像してみてください。100 の xml を作成し、それを美しいスープとフィルターで処理します。彼は、各ファイルの途中でクラッシュし、再起動する必要があることを認めています。

目的 (前の単語と次の単語) のために、実際の単語の辞書を作成し、ngram リストをフィルタリングして、スキャンされていない単語を除外することができます。最も一般的な単語のみを取得することでミススキャンを除外できるほど、スキャンが十分に良好であることを期待する人もいるかもしれません.

ちなみに、ngram データセットはこちらにありますhttp://books.google.com/ngrams/datasets

このサイトには、あなたが望むものがあるかもしれませんhttp://www.wordfrequency.info/

于 2012-01-08T22:42:27.197 に答える
2

アルゴリズムが何らかの推論を行うことができるように、「目に見えない」単語のインスタンスまたはコンテキストをさらにいくつか与える必要があります。間接的な方法の 1 つは、文の残りの単語を読んで、それらの単語が出現する単語の辞書を調べることです。一般に、アルゴリズムが最初に推論を学習して理解することは期待できません。自分自身のことを考えてみてください.. 新しい単語を与えられた場合.. その意味をどの程度理解できるでしょうか (おそらく、その単語が文中でどのように使用されているか、また自分の理解度を調べることによって)。時間がたてば意味がわかります。

于 2012-01-08T23:24:50.733 に答える