文の類似性に最適な実用的なアルゴリズム


17

S1とS2の2つの文があり、どちらも15未満の単語数(通常)を持っています。

最も実用的で成功している(機械学習)アルゴリズムは、実装がおそらく簡単です(アーキテクチャがGoogle Inceptionなどのように複雑でない限り、ニューラルネットワークは大丈夫です)。

あまり時間をかけなくても問題なく動作するアルゴリズムを探しています。成功した使いやすいアルゴリズムがありますか?

これは、クラスタリングのカテゴリに分類できますが、分類する必要はありません。私の背景は機械学習からですので、どんな提案でも大歓迎です:)


何を実装しましたか?私も同じことに直面しており、更新を続けるコーパスの「k」関連記事の解決策を考え出す必要があります。
ディリーパ

回答:


16

ベクトル空間のコサイン類似性はあなたに答えることができます:http : //blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

または、各文の固有ベクトルを計算できます。しかし問題は、類似性とは何ですか?

「これは木です」、「これは木ではありません」

文のセマンティックな意味を確認する場合は、ワードベクトルデータセットが必要になります。wordvectorデータセットを使用すると、単語間の関係を確認できます。例:(王-男+女=女王)

Siraj Ravalには、ワードベクトルデータセットを作成するための優れたPythonノートブックがあります。https//github.com/llSourcell/word_vectors_game_of_thrones-LIVE


8

試すことができる方法の1つは、単語埋め込みアルゴリズム(word2vec、gloveなど)によって生成された単語ベクトルを平均化することです。これらのアルゴリズムは各単語のベクトルを作成し、それらの間のコサイン類似性は単語間の意味的類似性を表します。文間の平均ベクトルの場合。これらの方法について詳しく知るための良い出発点は、この論文:文の埋め込みが意味をうまく捉える方法です。いくつかの文の埋め込み方法について説明します。また、筆者が組成手法n-Gram機能を使用した文埋め込みの教師なし学習についても検討することをお勧めします。また、このgithubリポジトリでコードと使用手順を提供します。


2

bert-as-service(https://github.com/hanxiao/bert-as-service#building-a-qa-semantic-search-engine-in-3-minutes)はまさにそのソリューションを提供します。

あなたの質問に答えるには、BERTは些細なNNではないので、ゼロから自分で実装するのは非常に困難ですが、このソリューションを使用すると、文の類似性を使用するアルゴリズムにプラグインすることができます。


1

https://github.com/seatgeek/fuzzywuzzy#usageをチェックアウトする必要があります。fuzzywuzzyは、2つの文の類似度に基づいて0〜100の数値を提供する文字列/テキストマッチング用の素晴らしいライブラリです。レーベンシュタイン距離を使用して、使いやすいパッケージでシーケンス間の差を計算します。また、fuzzywuzzyがどのように機能するかについての詳細な説明については、このブログ投稿を参照してください。このブログはfuzzywuzzyの著者によっても書かれています


1

このブログには、短いテキストの類似性の解決策があります。主にBERTニューラルネットワークモデルを使用して、文間の類似性を見つけます。 https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e


こんにちは、Data Science Stack Exchangeへようこそ!外部のWebサイトからソリューションを参照するときは、回答に要約を書くことを検討してください。実際、これは読みやすく、ターゲットページが変更されたりリンクが壊れたりしても回答が陳腐化するのを防ぎます。
ロマン・レブール

いいですね、これは本当に良いものです。彼らは基本的にBERTを使用していますか?@RomainReboulleauは間違いなく正しいです!
DaveTheAl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.