16

フレーズまたはキーワードを一連の類似キーワードと一致させる必要があるプロジェクトに取り組んでいます。同じ意味分析を実行する必要があります。

例:

関連 QT
安価な健康保険
手頃な価格の健康保険
低コストの医療保険より 安価な健康保険
の健康保険プラン

一般的な意味

低コストの健康保険

ここで、一般的な意味列の下の単語は、関連する QT 列の下に一致する必要があります。同じことを行うためのツールやテクニックをたくさん調べました。S-Match は非常に有望に思えましたが、Java ではなく Python で作業する必要があります。また、Latent Semantic Analysis も良さそうに見えますが、キーワード マッチングよりもキーワードに基づくドキュメント分類の方が適していると思います。私はNLTKにある程度精通しています。どの方向に進むべきか、同じためにどのツールを使用する必要があるかについて、誰かが洞察を提供できますか?

4

3 に答える 3

6

これらの単語が出現する大規模なコーパスが利用可能な場合は、モデルをトレーニングして、各単語をベクトルとして表すことができます。たとえば、word2vec の「skip-gram および CBOW モデル」を介して深層学習を使用できます。これらはgensim ソフトウェア パッケージに実装されています。

word2vec モデルでは、各単語はベクトルで表され、単語を表すベクトルのコサインを測定することで、2 つの単語間の意味的類似性を測定できます。意味的に類似した単語は、コサイン類似度が高くなければなりません。たとえば、次のようになります。

model.similarity('cheap','inexpensive') = 0.8

(値は、説明のためだけに構成されています。)

また、私の実験から、比較的少数の単語 (つまり、最大 3 または 4 単語) を合計すると、セマンティクスが保持されます。たとえば、次のようになります。

vector1 = model['cheap']+model['health']+model['insurance']
vector2 = model['low']+model['cost']+model['medical']+model['insurance']

similarity(vector1,vector2) = 0.7

(繰り返しますが、説明のためだけです。)

クラスターを生成するための尺度として、単語間のこの意味的類似性尺度を使用できます。

于 2014-12-24T21:54:32.653 に答える
2

まず、 Wordnetを見てみましょう。何十万もの用語の真の同義語と他の単語の関係を提供します。にタグを付けたのでnltk: Wordnet のバインドを提供し、ドメイン固有のソリューションの基礎として使用できます。

まだ NLTK にあるので、NLTK の本similar()紹介nltk.text.ContextIndexにあるメソッドの説明と、それが基づいているクラスを確認してください。(すべて非常に単純ですが、本当に必要なものはそれだけかもしれません)。

于 2013-01-06T14:01:21.983 に答える