1

テキストファイルから文にタグを付けるプログラムをJavaで作成しようとしています。各タグには、関連付けられたキーワードの配列があります。文にタグの配列に属する1つ以上のキーワードが含まれている場合にのみ、タグが文に適用されます。

たとえば、私には2つのタグがあります。障害と適応です。それらのタグの配列には、障害を表す「バグ」、「失敗」などの単語があり、「適応のためにクリーンアップする」という単語があります。文の1つは「BUGが見つかり修正されました」で、これは障害カテゴリに分類されます。したがって、「バグ」という単語が含まれているため、見出しの障害の後に文を入力します。どうすればよいかオンラインで検索しましたが、何も見つからないようです。

これは私が作成した配列リストです:

String[] faults = {
            "Misspelled",
            "Error",
            "Fixed",
            "Change",};

String[] adaption = {"Fixed comments",
        "Filters", "Polish","Adjust"};

どんな助けでも大歓迎です。ありがとうございました。:)

4

4 に答える 4

1

あなたが望むものを手に入れるのは本当に簡単ではありません:)しかし、私はそれを手に入れると思います...

2つのグループがあるため、2つの配列リストがあります。adaptionそしてfault2つのグループになります...

  1. まず、入力から文字列へのテキスト全体を読む必要があります。
  2. 次に、文で見つける必要がありますString[] sentences = split()。「。」、「、」、「!」に分割する必要があります。そしてすべての文の終わりの印。split(.|?|!|)これはプロトタイプで実行できるため、正規表現を使用する必要があります。
  3. 次に、これらの文を単語に分割する必要があります。今すぐ分割する必要があります-)String[] words=split(\\s+)空白を見つけると、\\s+すべての空白(\t \r \nなど)が表されます。
  4. そして最後に、forループを使用して単語配列を反復処理し、2つ以上のグループ(適応、障害)のメンバーとの一致を見つける必要があります(indexOf()またはequals()文字列メソッドを使用)...明らかに言葉の完全一致、あなたはHashMapを使うことができます、そしてこのようGroup1.get("the word you present itareted")に、これはあなたのアプリをとても速くすることができます;)

私はあなたのためにソースを書くこともできますが、私はあなたにいくつかのヒント、それを行う方法を与えるためだけに良いと思います。ヘルプが必要な場合は、GLを作成してください。

于 2013-01-22T15:30:53.843 に答える
1

あなたの質問を正しく理解したかどうかはわかりませんが、理解している場合は、代わりにHashmapを試してみてください。ペアがあり、特定の.get()メソッドを使用して、その値を取得できます。

于 2013-01-22T15:24:42.963 に答える
1

文字列に特定の部分文字列が含まれているかどうかを確認する方法(または単語に分割する方法)については、java.lang.Stringのドキュメントを参照してください。また、 java.lang.HashMapも参照してください。

于 2013-01-22T15:27:57.377 に答える
1

正規表現を使うともっとうまくいくと思います。カテゴリごとに、正規表現パターンを定義してから、ファイルの各行とパターンを一致させてみてください(フレーズは1行ずつ来ると思います)。

import java.util.regex.*;
// ...    

Pattern faults = Pattern.compile("Misspelled|Error|Fixed|Change");
Pattern adaption = Pattern.compile("Fixed Comments|Filters|Polish|Adjust");

// I assume I can read from BufferedReader 'in'.

for ( String line = in.readLine() ; line != null ; line = in.readLine() ) {
    if ( faults.matcher(line).find() ) {
        // Classify as fault
    }
    if ( adaption.matcher(line).find() ) {
         // Classify as adaption
    }
}

find()メソッドが返されるか、一致が見つかったかどうかに応じてtrue返されることに注意してください。パッケージのJavaドキュメント、および/またはJeffreyFriedlの著書「MasteringRegularExpressions」falseを参照することをお勧めします。たぶん、Javaチュートリアルの正規表現トレイルも役立つでしょう。java.util.regex

于 2013-01-22T15:55:49.377 に答える