問題タブ [nlp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - Contextual Natural Language Resources、どこから始めればよいですか?
テキストからコンテキストとサブジェクトを引き出すことができる自然言語での作業を開始するための .Net または概念的なリソースはどこにありますか。単語頻度アルゴリズムを使用したくありません。
language-agnostic - Google 検索スタイルに「もしかして:」を与える StringToken パーサー
次の方法を探しています。
String 内の空白で区切られたトークンを取得します。提案された単語を返す
つまり、
Google 検索は"fonetic wrd nterpreterr"を取得でき
、結果ページの上部に"もしかして: phonetic word interpreter"と表示されます。
C* 言語または Java でのソリューションが望ましいでしょう。
そのような機能を実行する既存のオープン ライブラリはありますか?
または、Google API を利用して提案された単語を要求する方法はありますか?
nlp - NLP: (小さな) コーパスの構築、または「あまり専門的でない英語のテキスト ファイルを大量に入手するには?」
小さなコーパスで使用する日常の英語のテキストのアーカイブまたはコレクションを見つける場所について誰か提案がありますか? 私はグーテンベルグ プロジェクトの書籍を作業プロトタイプに使用しており、より現代的な言語を取り入れたいと考えています。ここでの最近の回答は、ユーズネットの映画レビューの素晴らしいアーカイブを間接的に示しています、私には思いつかなかった、そしてとても良いです。この特定のプログラムの場合、技術的なユースネット アーカイブやプログラミング メーリング リストでは結果が傾いて分析が難しくなりますが、あらゆる種類の一般的なブログ テキスト、チャットのトランスクリプト、または他の人に役立つ可能性のあるものはすべて非常に役立ちます。また、あまりマークアップされていない部分的またはダウンロード可能な研究コーパス、またはウィキペディアの記事の適切なサブセットを見つけるためのヒューリスティック、またはその他のアイデアは非常に高く評価されています。
(ちなみに、私はダウンロードなしの善良な市民であり、そのような素材をホストするサーバーに要求しない故意に遅いスクリプトを使用しています.何か巨大なものを私に指摘することでモラルハザードを感じた場合に備えて.)
更新: ユーザー S0rin は、ウィキペディアがクロールを要求せず、代わりにこのエクスポート ツールを提供していると指摘しています。Project Gutenberg には、ここで指定されたポリシーがあります。つまり、クロールしないようにしてください。
UPDATE 2 ウィクペディアのダンプは、それらを指摘した回答者のおかげで、進むべき道です。ここから英語版を使用することになりました: http://download.wikimedia.org/enwiki/20090306/、および約半分のサイズのスペイン語のダンプ。それらはクリーンアップするのに多少の作業が必要ですが、それだけの価値があり、リンクには多くの有用なデータが含まれています.
java - Java で自然な DSL を作成するのに最適なツールは何ですか?
数日前、私はブログ エントリ ( http://ayende.com/Blog/archive/2008/09/08/Implementing-generic-natural-language-DSL.aspx ) を読みました。 .NET を使用した一般的な自然言語 DSL パーサー。
私の意見では、彼のアイデアの素晴らしい部分は、テキストが解析され、文と同じ名前を使用するクラスと照合されることです。
例として、次の行を取り上げます。
解析の結果を取得する「既知の」オブジェクトのコレクションを使用して変換されます。オブジェクトの例は次のとおりです (私の例では Java を使用しています)。
したがって、最初の文を処理するとき、CreateUser クラスは一致し (明らかに「ユーザーの作成」の連結であるため)、コンストラクターでパラメーターを受け取るため、パーサーはユーザー パラメーターとして「user1」を受け取ります。
その後、パーサーは次の部分「with email」もメソッド名と一致することを識別し、そのメソッドはパラメーターを受け取るため、「test@email.com」を email パラメーターとして解析します。
もうお分かりだと思いますよね?少なくとも私にとっては、アプリケーション テスターが自然言語で「テスト スクリプト」を作成し、その文を JUnit を使用してアプリの動作をチェックするクラスに解析できるようにするという非常に明確なアプリケーションの 1 つです。
Java を使用してそのようなパーサーをコーディングできるツールまたはリソースに関するアイデア、ヒント、意見を聞きたいです。複雑な字句解析器や ANTLR のようなフレームワークの使用を避けることができればなおさらです。これはハエを殺すためにハンマーを使用することになると思います。
それ以上に、そのためのオープンソース プロジェクトを開始する人がいれば、私は間違いなく興味があります。
algorithm - テキスト コンテンツにジオタグまたはジオラベルを付ける方法
テキストに都市/地域または起源を自動的にラベル付けするための優れたアルゴリズムは何ですか? つまり、ブログがニューヨークに関するものである場合、プログラムでどのように伝えることができるでしょうか。ある程度確実にこれを行うと主張するパッケージ/ペーパーはありますか?
私はいくつかの tfidf ベースのアプローチ、固有名詞の交差を見てきましたが、これまでのところ目覚ましい成功はありません。アイデアをいただければ幸いです。
より一般的な質問は、トピックのリストが与えられた場合のトピックへのテキストの割り当てに関するものです。
シンプル/単純なアプローチは、ベイジアン アプローチで完全に好まれましたが、私はオープンです。
encoding - 理論: 「レキシカルエンコーディング」
私は「レキシカル エンコーディング」という用語を、より適切な用語がないために使用しています。
文字とは対照的に、言葉は間違いなくコミュニケーションの基本単位です。Unicode は、既知のすべてのアルファベットの各文字に数値を割り当てようとします。ある言語にとっての文字は、別の言語にとってのグリフです。Unicode 5.1 は現在、これらのグリフに 100,000 を超える値を割り当てています。現代英語で使われている約18万語のうち、約2,000語の語彙があれば一般的な会話ができると言われています。「字句エンコーディング」は、各文字ではなく各単語をエンコードし、それらをセンテンス内にカプセル化します。
この例では、文字列内の各トークンが整数としてエンコードされています。ここでのエンコーディング スキームは、単語の使用状況の一般化された統計的ランキングに基づいて int 値を割り当て、疑問符に定数を割り当てただけです。
最終的には、単語には綴りと意味の両方があります。「字句エンコーディング」は、文全体の意味と意図を保持し、言語固有ではありません。英文は「...言語に中立な意味の原子要素...」にエンコードされ、構造化された構文形式と文法構造を持つ任意の言語に再構成できます。
「レキシカルエンコーディング」技術の他の例は何ですか?
単語の使用統計がどこから来たのか興味がある場合:
http://www.wordcount.org
java - Java の名前付きエンティティ認識ライブラリ
Java用のシンプルだが「十分な」名前付きエンティティ認識ライブラリ(および辞書)を探しています。電子メールとドキュメントを処理し、名前、場所、住所、日付などの「基本情報」を抽出しようとしています。
私は周りを見回してきましたが、ほとんどは重い側にあり、完全な NLP のようなプロジェクトのようです。
推奨事項はありますか?
php - 実際の単語を生成するステミングアルゴリズム
テキストの段落を取り、そこから「タグ」のリストを抽出する必要があります。これのほとんどは非常に簡単です。ただし、重複を避けるために、結果の単語リストをステミングするためのヘルプが必要です。例:コミュニティ/コミュニティ
私はPorterStemmerアルゴリズムの実装を使用しました(ちなみに私はPHPで書いています):
http://tartarus.org/~martin/PorterStemmer/php.txt
これはある程度までは機能しますが、「実際の」単語は返されません。上記の例は「commun」に由来しています。
「Snowball」を試しました(別のStack Overflowスレッド内で提案されています)。
http://snowball.tartarus.org/demo.php
私の例(コミュニティ/コミュニティ)では、Snowballは「communiti」に由来します。
質問
これを行う他のステミングアルゴリズムはありますか?他の誰かがこの問題を解決しましたか?
私の現在の考えは、ステミングアルゴリズムを使用して重複を回避し、遭遇した最短の単語を選択して実際に表示する単語にすることができるというものです。
algorithm - 潜在的ディリクレ配分、落とし穴、ヒント、プログラム
トピックの曖昧さの解消と割り当てのために潜在的なディリクレ割り当てを試しており、アドバイスを求めています。
- どのプログラムが「最良」であるか、最も使いやすい、最良の事前推定、高速の組み合わせ
- 話題性についての直感をどのように取り入れるか。同じ著者によるすべての記事のように、コーパス内のいくつかのアイテムが実際には同じカテゴリにあることを知っているとしましょう。それを分析に追加できますか?
- 乗船する前に知っておくべき予期しない落とし穴やヒントはありますか?
どのようなプログラムでも R または Python のフロント エンドがあればいいのですが、C を扱うことになると思います (そして受け入れます)。
string - 複数の結合された単語を分割するにはどうすればよいですか?
私は以下の例で、1000程度のエントリの配列を持っています:
次のように、これらをそれぞれの単語に分割できるようにしたいと思います。
私は正規表現がうまくいくことを望んでいました。しかし、立ち止まる境界がなく、キーとなる可能性のある大文字化も存在しないため、何らかの辞書への参照が必要になるのではないかと考えています。
手作業でできると思いますが、コードでできるのになぜでしょうか! =) しかし、これは私を困惑させました。何か案は?