0

ソフトウェア プロジェクトが異なれば、コーディング規約も異なります。同じプロジェクトでも、異なる言語が使用されている可能性があり、異なる慣習があります。ソース コードからの識別子トークンを使用して、ドキュメント (ソース ファイルの外部に表示される) を検索するには何が適していますか?

たとえば、ソースにself._def_passwdまたはthis.defPasswrdがある場合、ドキュメント ツリーのクエリはデフォルトのパスワードと一致するように努力する必要があります。

これまでのところ、編集距離が小さい場合はうまく機能するレーベンシュタイン距離で並べ替えようとしてきましたが、しきい値を大きくすると偽陽性が多すぎて、ドキュメントの空白で問題が発生します。

8 0.666667 announcement getContent AnnouncementBean.java(Token.Name.Function )
8 0.666667 announcement getPercent DataObservation.java (Token.Name.Function)
8 0.666667 announcement GroupBean GroupBean.java (Token.Name.Class)

ここで、最初の値はレーベンシュタイン距離で、2 番目の値は距離を一致した単語の長さで割ったものです。しようと思っています

  1. Jaccard、Tanimoto アルゴリズムを調べる
  2. 知性/ちょっとしたコードを提案する
  3. SO のどこかに、生物学者がシーケンスのマッチングに使用するいくつかのアルゴリズムに関する投稿がありました。
  4. http://en.wikipedia.org/wiki/Naming_convention_%28programming%29に基づいて、正規表現チェーン ルールを作成します。

最後のオプションは文字通り最後のオプションです。この種のものに対して、他のどのアルゴリズムがより良い結果をもたらすと思いますか?

4

1 に答える 1

0

加重編集距離を使用してみてください。ここでは、通常の略語、キーボードの距離による文字の間違いの可能性に関する知識をエンコードできます。たとえば、[ao]のような母音の重みをゼロにすることができ、パスワードはpswrdと等しくなります。他のオプションは、単語レベルの編集距離を構築し、ここで同義語を使用することです。また、単語や文字と同時に機能するEditDistanceを構築しました。

于 2011-03-21T18:44:34.223 に答える