3

私は NLP (自然言語処理) への新規参入者です。スタートアップ プロジェクトとして、言い換え認識機能 (2 つの類似した文を認識できるシステム) を開発しています。レベル、すなわち、レキシカル、シンタックス、セマンティックレキシカルレベルでは、コサイン類似度、マッチング係数、ジャカード係数などの複数の類似度測定があります.これらの測定には、シェフィールド大学によって開発されたsimMetricsパッケージを使用しています..これは、さまざまな類似性測定のための素晴らしいパッケージです。多くの類似性測定が含まれています。しかし、レーベンシュタイン距離とジャロウィンクラー距離測定の場合、コードは *文字レベルのみです*のみ.文レベルでコードが必要です(つまり、文字単位ではなく単一の単語を単位と見なします)。また、マンハッタン距離のコードはSimMetricsにはありません...必要なコードを開発するための提案を専門家に依頼します(または) 上記の手段の文レベルでのコードを提供してください。

私を助けてくれたあなたの時間と努力に、前もって感謝します。

4

2 に答える 2

3

私は数年前から NLP の分野で働いていますが、回答やコメントを提供してくれた人々に完全に同意します。これは本当に難しい問題です。ただし、いくつかの指針を提供させてください。

(1) 語彙の類似性: ジャロ・ウィンクラー距離を文レベルに一般化しようとする代わりに、文字レベルまたは単語レベルの言語モデルを開発し、対数尤度を計算すると、おそらくはるかに実り多いものになります。さらに説明しましょう。コーパスに基づいて言語モデルをトレーニングします。次に、コーパス内の文に類似/非類似として注釈が付けられた候補文を大量に取得します。これらの各テスト センテンスの対数尤度を計算し、カットオフ値を設定して類似性を判断します。

(2) 構文上の類似性: これまでのところ、これを捉えることができるのはスタイロメトリックな類似性だけです。このためには、PCFG 解析ツリー (または TAG 解析ツリー。TAG = ツリー隣接文法、CFG の一般化) を使用する必要があります。

(3) 意味論的類似性: 頭の中で、Wordnet などのリソースを使用して、synset 間の類似性を識別することしか考えられません。しかし、これも単純ではありません。最初の問題は、セマンティクスのチェックに進む前に、2 つ (またはそれ以上) の文のどの単語が「対応する単語」であるかを識別することです。

于 2012-02-10T18:18:31.993 に答える
2

Chris が示唆するように、これは初心者にとって重要なプロジェクトです。チャンクなど、より単純なもの (比較的退屈な場合) から始めることをお勧めします。

Python NLTK ライブラリのドキュメントと書籍を参照してください。探しているものに近いサンプルがいくつかあります。たとえば、封じ込め: あるステートメントに別のステートメントが含まれている可能性はありますか。そこにある「もっともらしい」ことに注意してください。最先端の技術は、単純なはい/いいえ、または可能性でさえも十分ではありません。

于 2011-01-11T03:45:01.233 に答える