2012-04-27 16 views
0

2文を含むファイルを読み込んで比較し、0と1の間の数値を返す必要があります。文がまったく同じ場合は、真となるように1を返します。それらが完全に反対の場合は、falseの場合は0を返します。文が似ているが、単語が類義語または近いものに変更された場合は.25または.75を返します。読み込みファイルからの文章の比較 - Java

______________________________________ 
Text: Sample 

Text 1: It was a dark and stormy night. I was all alone sitting on a red chair. I was not completely alone as I had three cats. 

Text 20: It was a murky and stormy night. I was all alone sitting on a crimson chair. I was not completely alone as I had three felines 
// Should score high point but not 1 

Text 21: It was a murky and tempestuous night. I was all alone sitting on a crimson cathedra. I was not completely alone as I had three felines 
// Should score lower than text20 

Text 22: I was all alone sitting on a crimson cathedra. I was not completely alone as I had three felines. It was a murky and tempestuous night. 
// Should score lower than text21 but NOT 0 

Text 24: It was a dark and stormy night. I was not alone. I was not sitting on a red chair. I had three cats. 
// Should score a 0! 
________________________________________________ 

は、私は、ファイルリーダーを持っているが、私はそれらを比較できるように各行を格納するための最良の方法を確認していない:テキストファイルは次のようにフォーマットされます。今のところ私はファイルを読み込み、スクリーンに印刷しています。これらを保管して比較して、自分の希望する番号を取得する最良の方法は何ですか?

import java.io.*; 

public class implement 
{ 


    public static void main(String[] args) 
    { 
     try 
     { 
      FileInputStream fstream = new FileInputStream("textfile.txt"); 

      DataInputStream in = new DataInputStream (fstream); 
      BufferedReader br = new BufferedReader (new InputStreamReader(in)); 
      String strLine; 

      while ((strLine = br.readLine()) != null) 
      { 
       System.out.println (strLine); 
      } 

      in.close(); 
     } 

     catch (Exception e) 
     { 
      System.err.println("Error: " + e.getMessage()); 
     } 

    } 

} 
+1

これらは完全に2つの異なるものです。あなたが求めていることを具体的に記述してください。(1)ファイルからデータを保存する方法? ** OR **(2)2つの文字列を比較して、そのスコアがどのようなものでなければならないのですか?この場合、私たちはあなたの最初の考えとあなたがすでに試したことについての説明を聞くべきであり、それはなぜ失敗するのですか? – amit

+1

また、主に2つの理由でクラス 'implement'を命名しないでください:(1)意味のある名前をつけて、それが何をするかを記述します。 (2)javaの規約では、クラス名は大文字で始まり、 'implement'は小文字で始まります。\ – amit

+0

各行を文字列として保存するにはどうすればよいでしょうか?== – mrjeck2

答えて

1

アレイリストに保存します。

ArrayList list = new ArrayList(); 
//Read File 
//While loop 
list.add(strLine) 

は、単にその後、句読点を削除し、スペースで区切ると、あなたが比較されている文章中の各単語を検索文の中で各変数を確認します。私は言葉や2,3文字を無視することをお勧めします。

次に、行を配列に保存して、それらを比較したいと思います。 類似の単語を比較するには、単語を効率的にチェックするデータベースが必要です。別名ハッシュテーブル。一度これをすると、データベース内の単語を細かく検索することができます。次に、この作品のハッシュテーブルには、類似の単語の各単語にリンクされたシソーラスが必要です。次に、各文章のキーワードについて同様の単語を取り出し、比較している文章でこれらの単語の検索を実行します。明らかに、類似した単語を検索する前に、2つの実際の文章を比較したいでしょう。最終的には、直接比較以上のことを行うために自分で構築しなければならない高度なデータ構造が必要になります。

+0

彼は11行目を読むときに何をしますか?サイズはあらかじめわかっていません。 – amit

+0

arraylistやその他のタイプの動的構造を使用してください。 – rflood89

+0

配列リストを使用することもできますし、ラインを数えて読み込むこともできます。 –

関連する問題