3

オランダ語を話す人々には、2文字 "ij"は "y"と簡単に交換できる1文字とみなされます。私が「1としての代わりに、2言語特有のためのDamerau-Levenshtein距離

の電流値IがIに取り組んでいるプロジェクトのために

は「IJ」と「Y」との間の距離を算出するDamerau–Levenshtein distanceの変形がしたいです私自身はこれを試してきましたが失敗しました。私の問題は、両方のテキストが異なる長さであるという事実をどう扱うかの手掛かりがないことです。 誰かがこれを解決する方法に関する提案/コードの断片を持っていますか?

ありがとうございました。

+0

オランダ語を音素に変換して距離を取るとどうなりますか? – dnagirl

+0

AFAIKの場合、距離は「元の」2つのテキストに比べて変化することがあります。 –

答えて

2

ウィキペディアの記事は、用語ではかなり緩いです。 「自然言語」には「弦」といったものはありません。文字や文字の組み合わせで表現できる自然言語の音素があります。

いくつかの文字の組み合わせは、現代に生き残った歴史的な慣習の痕跡であり、現代の英語の「粗い」と同じように「gh」が-f-のように聞こえたり、まったく音が出ないことがあります。生の「文字列」に焦点を当てると、アルゴリズムは言語と正義の歴史的関係について不可知論的でなければならず、文字の組み合わせが単一の音素に関連するときはいつでも何らかのメトリックにつながるはずです。どのように "ラフ"から "ルーフ"になるのでしょうか?または "through"から "thru"まで? ドイツ語のウムラウトから "oe"?

あなたのケースでは、-y-は、音声学的に、正書法で-ij-と交換することができます。それでは、アルゴリズム、2つの削除、その後の挿入、または-j-または-i-の1つの削除に続いて、残りの文字の-y-への転置が続くでしょうか?あるいは、合体して合体に転じるのですか?

アルゴリズムを適用する前に、別の使用されていない別の文字を-ij-に使用することをお勧めします。おそらく、U00ECのラテン小文字iに重アクセント記号を付けます。

アルゴリズムはマルチコードポイント文字をどのように処理しますか?

+0

私が使用する実装がJavaベース( "char"型を使用)で、単純に "equal"と "not equal"を比較しているので、マルチコードポイント文字は問題なく処理されます。 –

+0

私のチームは困惑し、解決策を見つけました。私は、あなたが最も有益な提案をしたように、あなたを「答え」として与えています。ありがとう。 –

1

D-L距離自体は、距離を測定する方法のために、あなたのためにそれを処理するつもりはありません。

ここにはコード(または言語)は含まれていないので、すべての文字列が同じ構造に従っていることを確認するための提案を残すことができます。

、一般的な用語で、あなたの提示ので、DLの距離が文字のための文字を比較して、実際のようなあなたの前に解析する必要があります、自分自身にあなたの文字列を読んでいないことを念頭に置い

クマの状況を明確にします比較すると、ijをyと交換してはならない場合は、代わりに他の問題が発生します。

0

アイデアは、「ij」や英語の「gh」「th」や友人のような有向グラフが長さが1文字のみの何らかの構成の正書法表現に翻訳することです。距離メトリックはDamerau-Levenshteinを実行するときにすべてのタイプのリパルメントで同じでなくてもかまいませんが、何らかのペナルティを使用できますが、テーブルをローカルに埋め込む必要があるため、各サウンドを表の1つのセルにしたい。

"ij"が "ij"ではなく、スペルミスや単語分割の境界線(オランダ語で起こるかどうかわからない)、またはその他の状況では、これは壊れます実際には有向グラフではありません。

そうでなければ、いくつかのルックアライメントを行う必要があります。これは事態を複雑にしますが、アルゴリズムの成長順序を変えてはいけません(私は信じています)。しかし、一定の要因は依然としてはるかに大きくなります。

関連する問題