2012-01-17 16 views
2

ライセンスのtxtファイル間の類似性を計算したいので、どのライセンスに対応しているかを識別するlicense.txtに基づいています。どのような情報検索手法を使用すべきですか?いったん私はtf-idfをプログラムしましたが、これがここに当てはまるかどうかはわかりません。何を指示してるんですか?2つのlicense.txtファイル間の類似性を計算する方法は?

答えて

3

私は3年以上この問題に取り組んできましたが、それはそれほど些細なものではなく、tf-idfとコサインの類似性はもちろんのこと、単一のアルゴリズムで解決するつもりはありません。

多くの課題がありますが、私はそれらのいくつかの書き込み:

  1. 同様のライセンステキストを(AGPL/GPL/LGPL、BSD/apache1.1/opensslの、MIT/ISC /カール)があり、非常に困難曖昧さをなくし、非常に高いコサインの類似性を持っています(あなたが機能の選択について非常にスマートなのでなければ...)
  2. 同じライセンスの異なるバージョン(lgpl 2.0/2.1)
  3. LICENSE.TXTファイルには複数のライセンスが含まれていることが多い
  4. bsd通知は、すなわち、あなたは権利保持者を除いて同じテキストを持っています

残念なことに、銀の弾丸はありません。

+0

悪いニュース:私は正確な文字列の一致でいくつかの部分をしなければならないと思います。残りは手動で検査します。ライセンステキストにこのURLが含まれている場合は、http://www.apache.org/licenses/LICENSE-2.0.txtはApacheバージョン2.0であることを意味します。 – ilija

+1

Fossologyプロジェクトをチェックアウトします。これは、ライセンスおよびその他の種類のIP識別のためのソースの自動スキャンを作成しようとする試みです。サビノは絶対に正しいですが、銀色の弾丸はありません。 Linux foudationのSPDXプロジェクトは、少なくとも最終的に、既知のオープンソースライセンスの共通の識別子セットを標準化しています。開発者がソースコードヘッダーでそれらを使用し始めると、ソースの解析がはるかに簡単になります。 –

1

Luceneを使用して、すべてのライセンスをドキュメントに索引付けすることができます(それぞれのLuceneドキュメントはライセンスです)。あなたがそれに対応するliceneを確認したい新しいlicense.txtを持っている場合は、license.txt全体を照会として使用してluceneを照会することができます。

これは、TF-IDFとすべてのIR情報を使用することになります。しかし、特定のキーワードを確認するなど、問題に固有のものを使用することもできます。

関連する問題