如何阅读自然语言处理GATE中的段落

时间:2012-06-03 03:49:15

标签: java nlp gate

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

3 个答案:

答案 0 :(得分:2)

您可以使用

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

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

答案 1 :(得分: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>

你可以为每个单词获得更多标签,例如Person,Location,Sentence或Token。

如果用户输入例如

  

吉隆坡的用餐地点。赫尔顿酒店

结果将是包含

的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>

我目前正在尝试获取同义词,但无法这样做:( 我希望结果包括其他选项,如上面的句子,我想结果 用餐 - &gt;晚餐,食物,吃,餐厅。

答案 2 :(得分:0)

这对我有用:

  1. 初始化门
  2. 创建门控制器(默认为ANNIE)
  3. 创建语料库,将语料库设置为控制器,创建门文档(gateDoc),添加到语料库
  4. controller.execute();
  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);
                }