3

私はデータベースの自己プロジェクトに取り組んでいます。http://ir.dcs.gla.ac.uk/resources/test_collections/cran/から取得した入力ファイルがあります。

それぞれが00001.txt、... 01400.txt ...という名前の 1400 個の個別のファイルに処理した後、ステミングを適用した後、特定のフォルダーに個別に保存し、次の形式でStemmedFolderと呼びます。

StemmedFolder: 00001.txt には以下が含まれます。

investig
aerodynam
wing
slipstream
brenckman
experiment
investig
aerodynam
wing

StemmedFolder: 00756.txt には以下が含まれます。

remark
eddi
viscos
compress
mix
flow
lu
ting

等々....

私はコードを書きました:

  1. StemmedFolderを取得し、一意の単語を数えます
  2. アルファベット順に並べ替え
  3. ドキュメントの ID を追加します
  4. 説明するように、それぞれを新しいファイル 00001.txt から 01400.txt に保存します

{実装、変更、または編集がどのようになっているのか誰かが確認する必要がある場合に備えて、これら 4 つのセクションのコードを提供できます}


各ファイルの出力は、別のファイルに出力されます。(1400、それぞれ名前が00001.txt00002.txt ...) の特定のフォルダーでは、次の形式でFrequenceyFolderと呼ぶことができます。

FrequenceyFolder: 00001.txt には以下が含まれます。

00001,aerodynam,2
00001,agre,3
00001,angl,1
00001,attack,7
00001,basi,4
....

FrequenceyFolder: 00999.txt には以下が含まれます。

00999,aerodynam,5
00999,evalu,1
00999,lift,3
00999,ratio,2
00999,result,9
....

FrequenceyFolder: 01400.txt には以下が含まれます。

01400,subtract,1
01400,support,1
01400,theoret,1
01400,theori,1
01400,.....

______________

今私の質問

これらの 1400 個のファイルを再度結合して、次のような形式の txt ファイルを出力し、計算を行う必要があります。

'aerodynam' totalFrequency=3docs: [[Doc_00001,5],[Doc_01344,4],[Doc_00123,3]]
'book' totalFrequncy=2docs: [[Doc_00562,6],[Doc_01111,1]
....
....
'result' totalFrequency=1doc: [[Doc_00010,5]]
....
....

'zzzz' totalFrequency=1doc: [[Doc_01235,1]]

この長い記事を読んでくれてありがとう

4

1 に答える 1

1

Mapのを使用できますList

Map<String,List<FileInformation>> statistics = new HashMap<>()

上記のマップでは、キーは単語になり、値はList<FileInformation>単語を含む個々のファイルの統計を記述するオブジェクトになります。クラスは次のFileInformationように宣言できます。

class FileInformation {
    int occurrenceCount;
    String fileName;

    //getters and setters
}

上記のマップにデータを入力するには、次の手順を使用します。

  1. 内の各ファイルを読み取りますFrequencyFolder
  2. 初めて単語に出くわしたときは、それをキーとしてMap.
  3. FileInformationオブジェクトを作成し、occurrenceCount見つかった出現回数に設定し、fileName見つかったファイルの名前に設定しますList<FileInformation>。手順 2 で作成したキーに対応する にこのオブジェクトを追加します。
  4. 次に別のファイルで同じ単語に出くわしたときは、新しいFileInfomationオブジェクトを作成List<FileInformation>し、その単語のマップ内の対応するエントリに追加します。

データを入力したらMap、統計を印刷するのは簡単です。

for(String word : statistics.keySet()) {
  List<FileInformation> fileInfos = statistics.get(word);
  for(FileInformation fileInfo : fileInfos) {
      //sum up the occureneceCount for the word to get the total frequency
  }
}
于 2015-05-29T07:48:57.740 に答える