【发布时间】:2012-06-03 03:49:15
【问题描述】:
我正在使用 GATE 工具进行自然语言处理.. 我正在使用 java 代码从句子中读取行并获取关键字.. 必须在 creole xml 中进行哪些修改才能读取完整的段落..
【问题讨论】:
-
请发布您的
java代码,这样会更容易回答您的问题。
我正在使用 GATE 工具进行自然语言处理.. 我正在使用 java 代码从句子中读取行并获取关键字.. 必须在 creole xml 中进行哪些修改才能读取完整的段落..
【问题讨论】:
java 代码,这样会更容易回答您的问题。
你可以使用
doc.getNamedAnnotationSets().get("Original markups")
如果没有给出任何结果,可以使用类的方法annotateParagraphs()
gate.corpora.TextualDocumentFormat.
【讨论】:
我不确定你是什么意思,但如果你使用 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>
我目前正在尝试获取同义词,但无法这样做:( 我希望结果包括其他选项,如上述句子,我希望结果有 用餐->晚餐,食物,吃,餐厅。
【讨论】:
这对我有用:
以下代码
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);
}
【讨论】: