1

lucene プロジェクトで WikipediaTokenizer を使用したい - http://lucene.apache.org/java/3_0_2/api/contrib-wikipedia/org/apache/lucene/wikipedia/analysis/WikipediaTokenizer.htmlしかし、私は lucene を使用したことがありません。ウィキペディアの文字列をトークンのリストに変換したいだけです。しかし、このクラスで使用できるメソッドは end、incrementToken、reset、reset(reader) の 4 つだけです。誰かがそれを使用する例を教えてくれますか?

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

4

3 に答える 3

3

Lucene 3.0 では、next() メソッドが削除されました。ここで、incrementToken を使用してトークンを反復処理する必要があります。入力ストリームの最後に到達すると、false が返されます。各トークンを取得するには、 AttributeSourceクラスのメソッドを使用する必要があります。取得する属性 (ターム、タイプ、ペイロードなど) に応じて、addAttribute メソッドを使用して、対応する属性のクラス タイプをトークナイザーに追加する必要があります。

次の部分的なコード サンプルは、Lucene のソース コードをダウンロードすると見つかる WikipediaTokenizer のテスト クラスからのものです。

...
WikipediaTokenizer tf = new WikipediaTokenizer(new StringReader(test));
int count = 0;
int numItalics = 0;
int numBoldItalics = 0;
int numCategory = 0;
int numCitation = 0;
TermAttribute termAtt = tf.addAttribute(TermAttribute.class);
TypeAttribute typeAtt = tf.addAttribute(TypeAttribute.class);

while (tf.incrementToken()) {
  String tokText = termAtt.term();
  //System.out.println("Text: " + tokText + " Type: " + token.type());
  String expectedType = (String) tcm.get(tokText);
  assertTrue("expectedType is null and it shouldn't be for: " + tf.toString(), expectedType != null);
  assertTrue(typeAtt.type() + " is not equal to " + expectedType + " for " + tf.toString(), typeAtt.type().equals(expectedType) == true);
  count++;
  if (typeAtt.type().equals(WikipediaTokenizer.ITALICS)  == true){
    numItalics++;
  } else if (typeAtt.type().equals(WikipediaTokenizer.BOLD_ITALICS)  == true){
    numBoldItalics++;
  } else if (typeAtt.type().equals(WikipediaTokenizer.CATEGORY)  == true){
    numCategory++;
  }
  else if (typeAtt.type().equals(WikipediaTokenizer.CITATION)  == true){
    numCitation++;
  }
}
...
于 2010-10-13T15:07:37.890 に答える
1

WikipediaTokenizer tf = new WikipediaTokenizer(new StringReader(test));

トークン token = new Token();

トークン = tf.next(トークン);

http://www.javadocexamples.com/java_source/org/apache/lucene/wikipedia/analysis/WikipediaTokenizerTest.java.html

よろしく

于 2010-10-13T14:25:54.043 に答える
0

public class WikipediaTokenizerTest { static Logger logger = Logger.getLogger(WikipediaTokenizerTest.class); protected static final String LINK_PHRASES = "[[ここにもう一度リンク]] をクリックします [ http://lucene.apache.orgここにもう一度] [[Category:abcd]] をクリックします";

public WikipediaTokenizer testSimple() throws Exception {
    String text = "This is a [[Category:foo]]";
    return new WikipediaTokenizer(new StringReader(text));
}
public static void main(String[] args){
    WikipediaTokenizerTest wtt = new WikipediaTokenizerTest();

    try {
        WikipediaTokenizer x = wtt.testSimple();

        logger.info(x.hasAttributes());

        Token token = new Token();
        int count = 0;
        int numItalics = 0;
        int numBoldItalics = 0;
        int numCategory = 0;
        int numCitation = 0;

        while (x.incrementToken() == true) {
            logger.info("seen something");
        }

    } catch(Exception e){
        logger.error("Exception while tokenizing Wiki Text: " + e.getMessage());
    }


}
于 2014-05-30T08:06:16.193 に答える