我正在使用 GATE 工具进行自然语言处理.. 我正在使用 java 代码从句子中读取行并获取关键字.. 必须在 creole xml 中进行哪些修改才能阅读完整的段落..
问问题
1454 次
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
这对我有用:
- 初始化门
- 创建门控制器(默认使用 ANNIE)
- 创建语料库,将语料库设置为控制器,创建门文档(gateDoc),添加到语料库
- 控制器.执行();
以下代码
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 回答