10

.NETでアプリケーションを作成しています。

実行中のアプリケーション名http://www.spinnerchief.com/を取得しました。それは私がそれをするのに必要なことをしました、しかし私はグーグルから何の助けも得ませんでした。私のアプリケーションには機能的な結果が必要です。ユーザーが1つの文を入力すると、ユーザーは同じ文を取得できますが、言い回しが異なります。

これが私が欲しいものの例です。

「パンカジはいい人だ」という文を書いたとしましょう。出力は次のようになります。

Pankajは素晴らしい人です。
パンカイは素晴らしい人です。
Pankajは容認できる人です。
Pankajは素晴らしい男です。
パンカイは素晴らしい男性です。
パンカイはいい人間です。
パンカイは立派な紳士です

4

3 に答える 3

7

任意の文に対してこれを正しく行うには、ソース文の自然言語分析を実行する必要があります。SharpNLP ライブラリを調べることをお勧めします。これは、C#/.NET 用の自然言語処理ツールの無料ライブラリです。

より単純なアプローチを探している場合は、正確さをある程度犠牲にする必要があります。たとえば、トリガー ワードのディクショナリを作成し、それらが文に表示されると、シソーラスの同義語に置き換えられます。このアプローチの問題は、単語を同等の品詞に置き換えることを確認することです。英語では、文中の文脈上の用法に基づいて、特定の単語が異なる品詞 (動詞、形容詞、副詞など) になる可能性があります。

(NLP ライブラリを使用していない場合) 対処する必要がある追加の考慮事項は、ステミングです。ほとんどの言語では、特定の品詞は、それらが適用される主題 (または目的語、話者、または文の時制) に基づいて活用/変更されます (英語の動詞)。

やりたいことが形容詞を置き換えることだけである場合(例のように)、トリガーワードを使用するアプローチは機能する可能性がありますが、容易に拡張することはできません. 何かを行う前に、問題のドメインの要件とルールを明確に定義し、それを使用してどのルートを取るかを決定することをお勧めします。

于 2010-09-21T15:01:45.420 に答える
3

これには、WordNet を使用するのが最適であり、それは下位語/上位語の関係です。WordNet .Netライブラリがあります。置き換えたい単語ごとに、その上位語 (つまり、人の場合、上位語は「人は一種の...」を意味します) または下位語 (「X は人の一種です」) を取得できます。次に、交互に使用する単語を置き換えます。

正しい品詞 (つまり、名詞、形容詞、動詞など) があることを確認する必要があります。また、感覚の問題もあり、望ましくない変化が生じる可能性があります (感覚 #1 が最も一般的です)。 .

于 2010-09-21T15:02:54.437 に答える
-3

私は .Net について何も知りませんが、辞書関数の使用を検討する必要があります (辞書関数が存在するか、存在しない場合は少なくともプロセスを合理化するライブラリがあると確信しています)。

次に、文字列を調べて、「is」や「a」などの単語を省略する必要があります。同義語にしたい単語だけを取ります。

この後、ループで文を吐き出すのは非常に簡単です。

幸運を。

于 2010-09-21T15:00:02.770 に答える