मुझे भी यही समस्या थी, इसलिए मैंने इसे भी देखा। क्रिस्टोफर मैनिंग द्वारा प्रस्तावित विधि कुशल है, लेकिन नाज़ुक बिंदु यह जानना है कि किस प्रकार का विभाजक उचित है। कोई कह सकता है कि केवल एक जगह की अनुमति होनी चाहिए, उदा। "जॉन जोर्न" >> एक इकाई। हालांकि, मुझे फॉर्म "जे। जेर्न" मिल सकता है, इसलिए मुझे कुछ विराम चिह्नों को भी अनुमति देना चाहिए। लेकिन "जैक, जेम्स और जो" के बारे में क्या? मुझे 3 ("जैक जेम्स" और "जो") की बजाय 2 इकाइयां मिल सकती हैं।
स्टैनफोर्ड एनईआर कक्षाओं में थोड़ा सा खोदकर, मुझे वास्तव में इस विचार का उचित कार्यान्वयन मिला। वे इसे एकल String
ऑब्जेक्ट्स के रूप में निर्यात इकाइयों को निर्यात करने के लिए उपयोग करते हैं। उदाहरण के लिए, विधि PlainTextDocumentReaderAndWriter.printAnswersTokenizedInlineXML
में, हमने:
private void printAnswersInlineXML(List<IN> doc, PrintWriter out) {
final String background = flags.backgroundSymbol;
String prevTag = background;
for (Iterator<IN> wordIter = doc.iterator(); wordIter.hasNext();) {
IN wi = wordIter.next();
String tag = StringUtils.getNotNullString(wi.get(AnswerAnnotation.class));
String before = StringUtils.getNotNullString(wi.get(BeforeAnnotation.class));
String current = StringUtils.getNotNullString(wi.get(CoreAnnotations.OriginalTextAnnotation.class));
if (!tag.equals(prevTag)) {
if (!prevTag.equals(background) && !tag.equals(background)) {
out.print("</");
out.print(prevTag);
out.print('>');
out.print(before);
out.print('<');
out.print(tag);
out.print('>');
} else if (!prevTag.equals(background)) {
out.print("</");
out.print(prevTag);
out.print('>');
out.print(before);
} else if (!tag.equals(background)) {
out.print(before);
out.print('<');
out.print(tag);
out.print('>');
}
} else {
out.print(before);
}
out.print(current);
String afterWS = StringUtils.getNotNullString(wi.get(AfterAnnotation.class));
if (!tag.equals(background) && !wordIter.hasNext()) {
out.print("</");
out.print(tag);
out.print('>');
prevTag = background;
} else {
prevTag = tag;
}
out.print(afterWS);
}
}
वे एक शब्द पर पुनरावृति, पिछले की तुलना में पता चल सके कि यह एक ही कक्षा (उत्तर) के रूप में पहले की व्याख्या की। इसके लिए, वे तथ्यों के अभिव्यक्ति का लाभ उठाते हैं क्योंकि माना जाता है कि इकाइयों को तथाकथित backgroundSymbol
(कक्षा "ओ") का उपयोग करके ध्वजांकित किया गया है। वे संपत्ति BeforeAnnotation
का भी उपयोग करते हैं, जो मौजूदा शब्द को पिछले एक से अलग करने वाली स्ट्रिंग का प्रतिनिधित्व करता है।यह अंतिम बिंदु उचित विभाजक की पसंद के संबंध में शुरू की गई समस्या को हल करने की अनुमति देता है।
स्रोत
2013-05-04 18:01:42
क्या 'सीआरएफसीलासिफायर' में 'आईओबी 'मॉडल के संबंध में 2016 तक कोई खबर है? –
2017. फिर भी 'सीआरएफसीलासिफायर' में 'आईओबी 'मॉडल की तलाश है। – NightFury13
क्या कोई आईडी है जिसे हम बहु टर्म इकाइयों में उपयोग कर सकते हैं यह जानकर कि यह वही इकाई है? –