9

Python はNLTK、多数のテキスト マイニングおよび処理メソッドと共に、テキストおよびコーパスの膨大なリソースであるライブラリを提供します。文が伝える意味に基づいて文を比較し、一致する可能性があるかどうかを判断する方法はありますか? つまり、インテリジェントなセンテンス マッチャーですか。

たとえば、 と のような文giggling at bad jokesですI like to laugh myself silly at poor jokes。どちらも同じ意味を伝えますが、文はほとんど一致しません (単語が異なるため、Levenstein Distanceひどく失敗するでしょう!)。

hereのような機能を公開する API があるとします。それに基づいて、単語gigglelaughdo が伝える意味が一致するかどうかを調べるメカニズムがあります。Badまでは一致しないpoorため、さらにレイヤーを追加する必要がある場合があります ( のような単語のコンテキストで一致するようjokeに、bad jokeは一般に と同じですが、 ! とは同じpoor jokebad personはありませんpoor person)。

主な課題は、文の意味をあまり変えないものを破棄することです。したがって、アルゴリズムは、最初の文と次の文の間で同じ程度の一致を返す必要があります。I like to laugh myself silly at poor jokes, even though they are completely senseless, full of crap and serious chances of heart-attack!

それで、それが利用可能になったとして、このようなアルゴリズムはまだ考え出されていますか? それとも車輪を発明しなければなりませんか?

4

1 に答える 1

5

より高度なトピック モデリング アルゴリズムが必要になります。もちろん、モデルをトレーニングするためのコーパスも必要です。これにより、クスクス笑いや笑い声などの同義語を簡単に処理できるようになります。

Python では、このパッケージを試すことができます: http://radimrehurek.com/gensim/ 私はそれを使用したことはありませんが、lsa/lsi、ランダム射影、さらには lda などの古典的なセマンティック ベクトル空間メソッドが含まれています。

私の個人的なお気に入りは、ランダム プロジェクションです。これは、より高速でありながら非常に効率的であるためです (別のライブラリを使用して Java で実行しています)。

于 2013-02-14T13:51:04.983 に答える