J'ai utilisé BreakIterator.getWordInstance pour diviser un texte chinois en mots. Voici mon exempleBreakIterator ne fonctionnait pas correctement avec du texte chinois
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));
}
}
}
Mon exemple texte est tiré de https://stackoverflow.com/a/42219474/954439
La sortie que je reçois est
0: I
1:
2: like
6:
7: to
9:
10: eat
13:
14: apples
20: .
21:
22: 我喜欢吃苹果
28: 。
considérant que, le résultat attendu est
0 I
1
2 like
6
7 to
9
10 eat
13
14 apples
20 .
21
22 我
23 喜欢
25 吃
26 苹果
28 。
J'ai même essayé le texte chinois pur, mais les mots sont brisés sur les espaces et la ponctuation char acters.
Je suis en train de programmer pour un serveur, donc la taille du fichier jar n'est pas un gros problème. J'essaie de trouver le nombre de mots qui est différent dans un contenu donné par rapport à un exemple de contenu en utilisant moins la sous-séquence commune (mais sur les mots).
Qu'est-ce que je fais mal?
@Suragch Je suis en train de programmer pour un serveur, donc la taille du fichier jar n'est pas un gros problème. J'essaie de trouver le nombre de mots qui est différent dans un contenu donné par rapport à un exemple de contenu en utilisant moins la sous-séquence commune (mais sur les mots). – srgsanky