// Additional word segmenter tests with complex string.
#[test] fn word_break_th() { for segmenter in [WordSegmenter::new_auto(), WordSegmenter::new_lstm()] { // http://wpt.live/css/css-text/word-break/word-break-normal-th-000.html let s = "ภาษาไทยภาษาไทย"; let utf16: Vec<u16> = s.encode_utf16().collect(); let iter = segmenter.segment_utf16(&utf16);
assert_eq!(
iter.collect::<Vec<usize>>(),
vec![0, 4, 7, 11, 14], "word segmenter with Thai"
); let iter = segmenter.segment_str(s);
assert_eq!(
iter.collect::<Vec<usize>>(),
vec![0, 12, 21, 33, 42], "word segmenter with Thai"
);
// Combine non-Thai and Thai. let s = "aภาษาไทยภาษาไทยb"; let utf16: Vec<u16> = s.encode_utf16().collect(); let iter = segmenter.segment_utf16(&utf16);
assert_eq!(
iter.collect::<Vec<usize>>(),
vec![0, 1, 5, 8, 12, 15, 16], "word segmenter with Thai and ascii"
);
}
}
#[test] fn word_break_my() { let segmenter = WordSegmenter::new_auto();
let s = "မြန်မာစာမြန်မာစာမြန်မာစာ"; let utf16: Vec<u16> = s.encode_utf16().collect(); let iter = segmenter.segment_utf16(&utf16);
assert_eq!(
iter.collect::<Vec<usize>>(),
vec![0, 8, 16, 22, 24], "word segmenter with Burmese"
);
}
#[test] fn word_break_hiragana() { for segmenter in [WordSegmenter::new_auto(), WordSegmenter::new_dictionary()] { let s = "うなぎうなじ"; let iter = segmenter.segment_str(s);
assert_eq!(
iter.collect::<Vec<usize>>(),
vec![0, 9, 18], "word segmenter with Hiragana"
);
}
}
#[test] fn word_break_mixed_han() { for segmenter in [WordSegmenter::new_auto(), WordSegmenter::new_dictionary()] { let s = "Welcome龟山岛龟山岛Welcome"; let iter = segmenter.segment_str(s);
assert_eq!(
iter.collect::<Vec<usize>>(),
vec![0, 7, 16, 25, 32], "word segmenter with Chinese and letter"
);
}
}
#[test] fn word_line_th_wikipedia_auto() { use icu_segmenter::LineSegmenter;
let text = "แพนด้าแดง (อังกฤษ: Red panda, Shining cat; จีน: 小熊貓; พินอิน: Xiǎo xióngmāo) สัตว์เลี้ยงลูกด้วยนมชนิดหนึ่ง มีชื่อวิทยาศาสตร์ว่า Ailurus fulgens";
assert_eq!(text.len(), 297); let utf16: Vec<u16> = text.encode_utf16().collect();
assert_eq!(utf16.len(), 142);
let segmenter_word_auto = WordSegmenter::new_auto(); let segmenter_line_auto = LineSegmenter::new_auto();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.