Ich habe BreakIterator.getWordInstance verwendet, um einen chinesischen Text in Wörter zu teilen. Hier ist mein BeispielBreakIterator funktioniert nicht korrekt mit chinesischem Text
import java.text.BreakIterator;
import java.util.Locale;
public class Sample {
public static void main(String[] args) {
String stringToExamine = "I like to eat apples. 我喜欢吃苹果。";
//print each word in order
BreakIterator boundary = BreakIterator.getWordInstance(new Locale("zh", "CN"));
boundary.setText(stringToExamine);
printEachForward(boundary, stringToExamine);
}
public static void printEachForward(BreakIterator boundary, String source) {
int start = boundary.first();
for (int end = boundary.next(); end != BreakIterator.DONE; start = end, end = boundary.next()) {
System.out.println(start + ": " + source.substring(start, end));
}
}
}
Mein Beispiel Text aus https://stackoverflow.com/a/42219474/954439
Der Ausgang genommen wird, die ich erhalte, ist
0: I
1:
2: like
6:
7: to
9:
10: eat
13:
14: apples
20: .
21:
22: 我喜欢吃苹果
28: 。
Während der erwartete Ausgang ist
0 I
1
2 like
6
7 to
9
10 eat
13
14 apples
20 .
21
22 我
23 喜欢
25 吃
26 苹果
28 。
ich auch versuchte reinen chinesischen Text, aber die Wörter sind gebrochen auf whitespace und Interpunktionszeichen acters.
Ich programmiere für einen Server, so dass die JAR-Dateigröße keine große Sorge ist. Ich versuche, die Anzahl der Wörter zu finden, die in einem bestimmten Inhalt anders als ein Beispielinhalt ist, der kleinste gemeinsame Untersequenz verwendet (aber auf Wörtern).
Was mache ich falsch?
@Suragh Ich programmiere für einen Server, so dass die JAR-Dateigröße keine große Sorge ist. Ich versuche, die Anzahl der Wörter zu finden, die in einem bestimmten Inhalt anders als ein Beispielinhalt ist, der kleinste gemeinsame Untersequenz verwendet (aber auf Wörtern). – srgsanky