4

私が読んでいる論文で、次のように行われた大まかな文字列比較を見つけました。

彼らが使用する式は次のとおりです (より一般的で読みやすいように、小さな単語を変更して論文から抽出したものです) 著者による説明はあまり明確ではないため、私は自分の言葉でもう少し説明しようとしました (例を使用して)作者による)

たとえば、ABCDE と BCEFA の 2 つのシーケンスの場合、2 つの可能なグラフがあります。

グラフ 1) B と BC を C と、E と E を接続するグラフ

グラフ 2) A と A を接続します

他の 3 つを接続している場合 (グラフ 1)、A と A を接続することはできません。これは、交差する線になるためです (BB、CC、EE の間に線を引くと想像してください)。つまり、AA にインクを塗った線は、BB、CC、および EE を結ぶ線と交差します。したがって、これら 2 つのシーケンスは 2 つの可能なグラフになります。1 つには 3 つの接続 (BB、CC、および EE) があり、もう 1 つの接続には 1 つのみ (AA) があり、次の式で与えられるスコア d を計算します。

したがって、2 つのペンタストリング間の類似度を定義するには、それらの間の距離 d を計算します。2 つのペンタストリングを並べて、キャラクター間のすべてのアイデンティティーを探します。各 ID が両方のペンタストリング間のリンクによって表される場合、このペアのグラフを定義します。このグラフの任意の部分を構成と呼びます。

次に、文字のクロス ペアリングがないすべての構成を保持します (意味は上記の例で説明されています。つまり、同一文字間のリンクの交差はなく、それらのグラフのみが保持されます)。次に、これらのそれぞれは、グラフに関連する文字の数 p、対応するペアのシフト Δi、および各五文字列の接続された文字間のギャップ δij の関数として評価されます。最小値は特性として選択され、距離 d と呼ばれます: d Min(50 – 10p + ΣΔi + Σδij) 非常に大雑把ですが、この尺度は一般に定性的な目視による推定とよく一致しています。たとえば、 と の間の距離 は 20 ですが、abcdeとの間の距離は 23 =(50 – 30 + 1 +2) です。abcfgabcdeabfcg

私はこれを行う方法について混乱しています。私を助けるための提案は大歓迎です。

レーベンシュタインと、タンパク質配列比較で使用される単純な配列アラインメントも試しました。論文へのリンクは次のとおりです

筆頭著者である Alain Figureau に関する情報は見つかりませんでした。また、MA Soto へのメールにはまだ返信がありません (今日現在)。

ありがとうございました

4

2 に答える 2

1

あなたが引用したテキストブロックの直後に、同じ著者による以前の論文への参照があります:タンパク質の二次構造と三次元パターン認識。距離の説明がない場合は、調査する価値があると思います(私は仕事をしていないため、完全なドキュメントにアクセスできません)。

それ以外の場合は、著者に直接連絡することもできます : Alain Figureau は昔ながらのフランスの研究者で、何の連絡もありません (ウェブページも、電子メールも、「ソーシャル ネットワーキング」もありません..) ので、試してみることをお勧めします。 MA Soto に連絡します。彼の電子メールは、論文の最後に記載されています。彼らはあなたが探している答えをあなたに与えると思います.実験の手順は、再現可能にするために非常に明確でなければなりません.それは研究における科学的方法の一部です.

于 2012-11-01T12:18:00.973 に答える
1

まあ、それは間違いなくレーベンシュタインではありません。

>>> from nltk import metrics
>>> metrics.distance.edit_distance('abcde','abcfg')
2
>>> metrics.distance.edit_distance('abcde','abfcg')
3
>>> help(metrics.distance.edit_distance)
Help on function edit_distance in module nltk.metrics.distance:

edit_distance(s1, s2)
    Calculate the Levenshtein edit-distance between two strings.
    The edit distance is the number of characters that need to be
    substituted, inserted, or deleted, to transform s1 into s2.  For
    example, transforming "rain" to "shine" requires three steps,
    consisting of two substitutions and one insertion:
    "rain" -> "sain" -> "shin" -> "shine".  These operations could have
    been done in other orders, but at least three steps are needed.

    @param s1, s2: The strings to be analysed
    @type s1: C{string}
    @type s2: C{string}
    @rtype C{int}
于 2012-10-31T21:07:46.560 に答える