2016-12-07 11 views
1

2つの文字列の中に単語が多い2つの文字列があります。2つのテキストファイル間の単語一致率のアルゴリズム

私の仕事は、2つの文字列の単語の一致率を見つけることです。誰かが、正確なパーセンテージ/マッチした単語を得るために私にアルゴリズムを提案することはできますか?

例:あなたは、以下のような方法を使用することができます

1. Mason natural fish oil 1000 mg omega-3 softgels - 200 ea 
2. Mason Vitamins Omega 3 Fish Oil, 1000mg. Softgels, Bonus Size 200-Count Bottle 

**Output** should be 8 words matched between two strings. 
+0

どのように重複を処理しますか?両方のサンプルストリングで 'fish 'が2回出現した場合、どのようにカウントに影響がありますか? –

+0

'tokenize'まず文章を作成し、次に' contains() 'などを使って単語をdiffしますか?何をしようとした..? –

+1

「あなたは既に持っている」アルゴリズムとは何ですか? – nicovank

答えて

2

。私はあなたがそれを試すことができる各ステップを記述するためにインラインのコメントを追加しました。このコード例では、単語を分割するために空白文字を使用しています。懸念がある場合は、コメントを追加することができます。

一致ワードは、ケースを無視していますが、そうでないと、指定された例で一致する単語が8個ある可能性がないためです。

public static int matchStrings(String firstString, String SecondString) { 

    int matchingCount = 0; 

    //Getting the whole set of words in to array. 
    String[] allWords = firstString.split("\\s"); 
    Set<String> firstInputset = new HashSet<String>(); 

    //getting unique words in to set 
    for (String string : allWords) { 
     firstInputset.add(string); 
    } 

    //Loop through the set and check whether number of words occurrence in second String 
    for (String string : firstInputset) { 
     if (SecondString.toLowerCase().contains(string.toLowerCase())) { 
      matchingCount++; 
     } 
    } 
    return matchingCount; 
} 
+0

ありがとう!それは私のために働いた。 –

+0

あなたのコンパイル時間を短縮するためにいくつかの組み込み関数を教えてもらえますか? –

関連する問題