2

同じベースを持つ単語をマージしようとしています。例:

  • 事件
  • 偶発的な
  • うっかり
  • 事故

また

  • 放棄する
  • 放棄された
  • 放棄

最初に使用したのは、

 Word.Application().SynonymInfo[myWord, Word.WdLanguageID.wdEnglishUS];

から単語の類義語を取得しword.dllます。しかし、同義語だけをマージするのではなく、同じベースの単語をマージしたくないことに気付きました。

2つの単語が同じベースを持つ場合に使用できる関数、word.dllまたはdll返す関数はありますか?

4

2 に答える 2

2

おそらく、オープン ソース ライブラリであるInflectorを探しているでしょう。

.Net 3.5対応

これがそのサンプルコードです。

于 2013-10-19T17:30:34.877 に答える
1

英語には多くの例外がありますが、独自の小さな関数を使用していくつかの最も一般的なシナリオに対処することで、90% のケースに対応できます。

一般的なシナリオはほとんどないようです。

a) 過去時制 : 接尾辞「ed」を追加して

b) 複数形 : "s"、"es"、

c) 形容詞を作るための一般的な接尾辞 :

d) 副詞の一般的な接尾辞

e) 動詞を名詞に変換するために使用される一般的な接尾辞

したがって、単語から共通の接尾辞を削除することで、同じベースになる単語をマージすることができます。

あまり一般的ではないシナリオでは、文字列が似ているかどうかを知るために、似たようなアルゴリズムを文字列にすることができます。レーベンシュタイン距離の実装を使用するように:

LINQ の使用

次のスタックオーバーフローの質問も参照してください。

C# 用に作成された Fuzzy Search または String Similarity Functions ライブラリはありますか?

于 2013-10-19T17:54:16.743 に答える