問題タブ [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.
machine-learning - 自然言語処理における二値化
二値化とは、エンティティのカラフルな特徴を数値のベクトル (ほとんどの場合はバイナリ ベクトル) に変換して、分類アルゴリズムの良い例を作成することです。
「The cat ate the dog」という文を二値化する場合、すべての単語に ID (たとえば、cat-1、ate-2、the-3、dog-4 など) を割り当てることから始めて、単語を単純に次のように置き換えることができます。ベクトル <3,1,2,3,4> を与える ID です。
これらの ID が与えられると、各単語に 4 つの可能なスロットを与え、特定の単語に対応するスロットを 1 に設定して、ベクトル <0,0,1,0,1,0,0,0 を与えるバイナリ ベクトルを作成することもできます。 ,0,1,0,0,0,0,0,1>. 後者の方法は、私の知る限り、一般的にバッグ・オブ・ワード法と呼ばれています。
さて、私の質問ですが、一般的な自然言語処理の機能、特に (Nivres アルゴリズムを使用した)遷移ベースの依存関係解析の機能を説明する際に最適な2 値化方法は何ですか?
このコンテキストでは、文全体をエンコードするのではなく、解析の現在の状態 (たとえば、スタックの先頭の単語と入力キューの最初の単語など) をエンコードしたいと考えています。順序は関連性が高いため、bag-of-words-method は除外されます。
bestとは、不必要なメモリを使い果たすことなく、データを分類器にとって最もわかりやすいものにする方法を指しています。たとえば、実際にバイグラムが 2% しか存在しない場合、バイグラムが 20000 の一意の単語に対して 4 億の機能を使用することは望ましくありません。
答えは特定の分類子にも依存するため、最大エントロピー モデル (liblinear)、サポート ベクター マシン (libsvm)、およびパーセプトロンに主に関心がありますが、他のモデルに適用される答えも歓迎します。
algorithm - ステミング - コード例またはオープン ソース プロジェクト?
ステミングは、タグ付けシステムに必要なものです。私はデリシャスを使用しており、タグの管理とプルーニングを行う時間がありません。ブログにはもう少し注意を払っていますが、完璧ではありません。私は組み込みシステム用のソフトウェアを書いていますが、ステミングが含まれていればもっと機能的 (ユーザーに役立つ) でしょう。
例:
Parse
パーサー
解析
私がそれらを入れるシステムが何であれ、すべて同じことを意味するはずです。
どこかに BSD ライセンスのステマーがあるのが理想ですが、そうでない場合、一般的なアルゴリズムとテクニックを学ぶにはどこを参照すればよいでしょうか?
BSD ステマー以外に、オープン ソース ライセンスのステマーは他にどのようなものがありますか?
-アダム
ruby-on-rails - Ruby/Rails の自然言語日付パーサー
Ruby のDate.jsに似たものを知っている人はいますか? 「今日から2週間」のようなものから日付オブジェクトを返すことができるもの。Remember the Milk ウェブアプリは、この機能をシステムに組み込んでおり、非常に使いやすいです。
私は Date.js ライブラリ自体を使用しますが、クライアント側にあるため、制限があります。ユーザーが JavaScript を有効にしていない場合、機能は失われます。これは、理想的にはテキスト メッセージ (SMS) 経由でシステムを使用する携帯電話ユーザーに影響を与えます。
すでに存在するソリューションを使用したいのですが、そうでない場合、このコードを Ruby に移植するのはどれほど難しいでしょうか? 自然言語の解釈についてはよくわかりませんが、時間がかかりそうです。
ありがとう。
nlp - NLP で固有名詞を認識するための戦略
自然言語処理(NLP)についてもっと学ぶことに興味があります。現在、辞書認識に基づかないテキスト内の固有名詞を認識する方法があるかどうか知りたいです。また、現在の辞書ベースの方法を説明するリソースを説明したり、リンクしたりできますか? NLP の権威ある専門家は誰ですか、またはこのテーマに関する決定的なリソースは何ですか?
nlp - 特定の単語に関連する単語 (特に物理的なオブジェクト) を検索する
1 つの単語に関連する単語 (具体的には物理的なオブジェクト) を見つけようとしています。例えば:
テニス: テニスラケット、テニスボール、テニスシューズ
スヌーカー: スヌーカー キュー、スヌーカー ボール、チョーク
チェス: チェス盤、チェスの駒
本棚: 本
私はWordNet、特にメロニムのセマンティック関係を使用しようとしました。ただし、以下の結果が示すように、この方法には一貫性がありません。
テニス:サーブ、ボレー、フットフォールト、セットポイント、リターン、アドバンテージ
スヌーカー:なし
Chess : チェスの動き、チェッカー盤
本棚: シェルフ
最終的には項の重み付けが必要になりますが、それは今のところあまり問題ではありません。
これを行う方法について何か提案はありますか?
ただの更新:ジェフとストンプチキンの両方の回答を組み合わせて使用することになりました。
ウィキペディアから得られる情報の質は優れており、具体的には (当然のことながら) 関連情報が非常に多くあります (「ブログ」や「iPod」などの用語が存在しない一部のコーパスと比較して)。
ウィキペディアからの結果の範囲は最良の部分です。このソフトウェアは、次のような用語を照合できます (簡潔にするためにリストを省略しています)。
- ゴルフ: [ボール、アイアン、ティー、バッグ、クラブ]
- 写真: [カメラ、フィルム、写真、アート、イメージ]
- 釣り: [魚、ネット、フック、トラップ、餌、ルアー、ロッド]
最大の問題は、特定の単語を物理的なアーティファクトとして分類することです。デフォルトの WordNet は、多くの用語 (「ipod」や「トランポリン」など) が存在しないため、信頼できるリソースではありません。
java - 単語のクラスのオンライン (できれば) 検索 API
単語のリストがあり、それをフィルタリングして、その単語のリストから名詞のみを取得したい (Java を使用)。これを行うために、単語のデータベースにそのタイプを照会する簡単な方法を探しています。
私の質問は、単語の意味定義ではなく、単語のクラスを見つけることができる、無料で簡単な単語検索 API を知っている人はいますか?
ありがとう!
ベン。
編集:言葉のクラスによって、私は「品詞」を意味しました これを片付けてくれてありがとう
java - 自然言語解析、実践例
シンプルなチャット ボットに自然言語解析ライブラリを使用したいと考えています。品詞タグを取得できますが、いつも疑問に思っています。POSで何をしますか。スピーチの部分を知っている場合は、どうすればよいですか?
回答の参考になると思います。しかし、どのデータ構造とアーキテクチャを使用できるでしょうか。
internationalization - 小数点としてドットを使用する国とコンマを使用する国があるのはなぜですか?
一部の国ではカンマ区切りとドット区切りがあるのはなぜですか? その理由は何か分かりますか?これを使うべきか、これを使うべきかを毎回チェックするのは非常に面倒です。
algorithm - 引数の数が定義されていない式の解析
自作言語の文字列を一種のツリーに解析しようとしています。
結果は次のようになります。
#、*、-> は記号です。a、b1 などはテキストです。
その瞬間から、式を評価するためのrpnメソッドしか知らないので、現在の解決策は次のとおりです。各シンボルの後に 1 つのテキスト トークンのみを許可する場合、最初に式を RPN 表記 (b = b1 b2; d = d1 d2; f = f1 f2) に簡単に変換し、ここから解析できます。
abc -> * de -> * # fg * #
ただし、テキスト トークンとその他のものをマージすると、問題が発生するようです。私のアイデアは、マーカー トークン (M) を作成することだったので、RPN は次のようになります。
a M b2 b1 M c -> * M d2 d1 M e -> * # f2 f1 M g * #
これも解析可能で、問題を解決しているようです。
それは言った:
- そのようなことを経験したことがあり、それが将来の実行可能な解決策である、または実行できないと言える人はいますか?
- 演算子のアリティが定義されていない式を解析するためのより良い方法はありますか?
- 良いリソースを教えてもらえますか?
ノート。はい、私はこの例が Lisp のプレフィックス表記法に非常によく似ていることを知っています。また、いくつかのブラケットを追加する方法があるかもしれませんが、ここでの経験はありません。ただし、ソース テキストには人為的なブラケットを含めてはいけません。また、# a * b -> [if value1 = value2] c -> d のような潜在的な中置 mixin についてどうすればよいかわかりません。
助けてくれてありがとう。
編集:私が探しているのは、可変数の引数を持つ後置表記のソースのようです。
algorithm - 製品のリストを分類するためのアルゴリズム?
多かれ少なかれ同じ製品を表すリストがあります。たとえば、以下のリストでは、これらはすべてSeagateハードドライブです。
- Seagateハードドライブ500Go
- ラップトップ用のSeagateハードドライブ120Go
- Seagate Barracuda 7200.12 ST3500418AS 500GB 7200 RPM SATA 3.0Gb/sハードドライブ
- Seagateの新しくて光沢のある500Goハードドライブ
- Seagate Barracuda 7200.12
- Seagate FreeAgentDesk500GB外付けハードドライブSilver7200RPMUSB2.0 Retail
人間の場合、ハードドライブ3と5は同じです。もう少し進んで、製品1、3、4、および5が同じであり、他のカテゴリーに製品2および6を入れると仮定することができます。
分類したい製品の膨大なリストがあります。誰かがそのようなことをするための最良のアルゴリズムが何であるかについての考えを持っていますか?助言がありますか?
私はベイズ分類器のことを考えていますが、それが最良の選択であるかどうかはわかりません。どんな助けでもいただければ幸いです!
ありがとう。