1

我正在使用 GATE 工具进行自然语言处理.. 我正在使用 java 代码从句子中读取行并获取关键字.. 必须在 creole xml 中进行哪些修改才能阅读完整的段落..

4

3 回答 3

2

您可以使用

doc.getNamedAnnotationSets().get("Original markups")

如果它没有给出任何结果,您可以使用annotateParagraphs()class 的方法gate.corpora.TextualDocumentFormat

于 2013-01-01T19:55:02.773 回答
0

我不确定你是什么意思,但如果你使用 ANNIE,你可以将每个段落放在一个单独的标签中。我用了standAloneAnnie.java

http://gate.ac.uk/wiki/code-repository/src/sheffield/examples/StandAloneAnnie.java

如果用户输入

What is your name, ,some text sometext

Sometext sometext sometext

结果将是

<paragraph>What is your name, ,some text sometext</paragraph>

<paragraph>Sometext sometext sometext</paragraph>

您可以获得更多标签,例如每个单词的人、位置、句子或标记。

例如,如果用户输入

在吉隆坡哪里用餐。赫尔顿酒店

结果将是一个 xml 文件,其中包含

<paragraph>
        <Sentence>
        <Token>Where</Token>
        <Token>To</Token>
        <Token>
        <Unknown>Dine</Unknown>
        </Token>
        <Token>In</Token>
        <Lookup>
        <Location>
        <Token>Kuala</Token>
        <Token>
        <Lookup>Lumpur</Lookup>
        </Token>
        </Location>
        </Lookup>
        <Token>
        <Split>.</Split>
        </Token>
        </Sentence>

        <Sentence>
        <Organization>
        <Token>Helton</Token>
        <Token>
        <Lookup>
        <Lookup>Hotel</Lookup>
        </Lookup>
        </Token>
        </Organization>
        </Sentence>

     </paragraph>

我目前正在尝试获取同义词,但无法这样做:(我希望结果包含其他选项,例如上述句子,我希望结果是 Dine -> Dinner, Food, Eat, Restaurant。

于 2012-06-09T15:19:57.180 回答
0

这对我有用:

  1. 初始化门
  2. 创建门控制器(默认使用 ANNIE)
  3. 创建语料库,将语料库设置为控制器,创建门文档(gateDoc),添加到语料库
  4. 控制器.执行();
  5. 以下代码

            FeatureMap features = gateDoc.getFeatures();
            String originalContent = (String)
         features.get(GateConstants.ORIGINAL_DOCUMENT_CONTENT_FEATURE_NAME);
            int length = originalContent.length();
    
            TextualDocumentFormat tdf = new TextualDocumentFormat();
                try {
                    tdf.annotateParagraphs(gateDoc,0, length,null);
    
    
                } catch (DocumentFormatException e) {
                    e.printStackTrace();
                }
    
            AnnotationSet paragraphs = gateDoc.getAnnotations().get("paragraph");
    
            Iterator it = paragraphs.iterator();
            Annotation currAnnot;
            SortedAnnotationList sortedParagraphs = new SortedAnnotationList();
    
            while (it.hasNext()) {
                currAnnot = (Annotation) it.next();
                sortedParagraphs.addSortedExclusive(currAnnot);
            } // while
    
            StringBuffer editableContent = new StringBuffer(originalContent);
    
    
                System.out.println("Number of Paragraphs -  "+paragraphs.size());
    
                for(Annotation paragraph:paragraphs){
                    long start = paragraph.getStartNode().getOffset().longValue();
                    long end = paragraph.getEndNode().getOffset().longValue();
    
                    String paraText=editableContent.substring((int) start, (int) end);
                    System.out.println(paraText);
                }
    
于 2015-04-01T18:36:22.783 回答