novel_segment/lib.rs
1//! Chinese word segmentation for web novels.
2//!
3//! This crate is a Rust port of the TypeScript `novel-segment` package.
4//! Other Rust programs should depend on this crate only:
5//!
6//! ```toml
7//! ws-segment-rs = { path = "../ws-segment-rs/crates/novel-segment" }
8//! ```
9//!
10//! ```rust,no_run
11//! use novel_segment::{DoSegmentOptions, Segment, SegmentOptions};
12//!
13//! fn main() -> Result<(), novel_segment::Error> {
14//! let mut seg = Segment::new(SegmentOptions { auto_cjk: true, ..Default::default() });
15//! seg.use_default()?;
16//! let words = seg.do_segment("這是一個中文分詞模組。", DoSegmentOptions::default());
17//! for w in words {
18//! println!("{} {:?}", w.w, w.p);
19//! }
20//! Ok(())
21//! }
22//! ```
23
24mod colors;
25mod datetime;
26mod zht;
27mod dict;
28mod error;
29mod loader;
30mod names;
31mod optimizers;
32mod options;
33mod pipeline;
34mod postag;
35mod segment;
36mod service;
37mod stopword;
38mod text;
39mod tokenizers;
40mod word;
41
42pub use error::{Error, Result};
43pub use options::{DoSegmentOptions, SegmentOptions};
44pub use pipeline::{Optimizer, Tokenizer};
45pub use postag::POSTAG;
46pub use segment::Segment;
47pub use service::{
48 apply_extras, convert_joined, crlf_normalize, load_json_config, process_text, run_test,
49 segment_words, ExpectedItem, SegmentMode, TestRequest, TestResult,
50};
51pub use word::{stringify, stringify_list, Word};