pub struct SerializableModel {Show 16 fields
pub feature_weights: Vec<f64>,
pub labels: Vec<String>,
pub pos_info: Vec<String>,
pub metadata: ModelMetadata,
pub connection_matrix: BTreeMap<usize, BTreeMap<usize, f64>>,
pub max_left_id: usize,
pub max_right_id: usize,
pub feature_sets: Vec<FeatureSetInfo>,
pub unk_category_names: Vec<String>,
pub unk_categories: BTreeMap<String, String>,
pub char_def_content: String,
pub feature_def_content: String,
pub rewrite_def_content: String,
pub cost_factor: i32,
pub left_id_map: Vec<(u32, String)>,
pub right_id_map: Vec<(u32, String)>,
}Expand description
Trained model with weights and configuration.
Fields§
§feature_weights: Vec<f64>Feature weights from CRF training
labels: Vec<String>Label information
pos_info: Vec<String>Part-of-speech information for each label
metadata: ModelMetadataModel metadata
connection_matrix: BTreeMap<usize, BTreeMap<usize, f64>>Connection cost matrix: (right_id, left_id) -> cost.
Ordered maps rather than hashed ones, at both levels. rkyv archives a
HashMap as a SwissTable whose slot assignment resolves collisions in
source iteration order, and HashMap iteration order is seeded per
instance – so serializing the same trained model twice produced files
of identical length with scattered byte differences (#974). A
BTreeMap serializes from its key-ordered iterator into a tree whose
shape depends only on the entry count, which makes model.dat
byte-reproducible. No stored value changes: both levels are only ever
filled key-by-key from Vec-ordered sources.
max_left_id: usizeMaximum left connection ID
max_right_id: usizeMaximum right connection ID
feature_sets: Vec<FeatureSetInfo>Feature set information (left_id, right_id, weight) for each label
unk_category_names: Vec<String>Unknown word category names (from char.def)
unk_categories: BTreeMap<String, String>Unknown word category features (from unk.def).
Ordered for the same reason as
SerializableModel::connection_matrix: rkyv’s archived HashMap
layout follows source iteration order (#974).
char_def_content: StringRaw content of the character definition file (char.def)
feature_def_content: StringRaw content of the feature definition file (feature.def)
rewrite_def_content: StringRaw content of the rewrite rule definition file (rewrite.def)
cost_factor: i32Cost factor for weight-to-cost conversion (MeCab default: 700)
left_id_map: Vec<(u32, String)>Left context ID to feature string mapping (for left-id.def)
right_id_map: Vec<(u32, String)>Right context ID to feature string mapping (for right-id.def)
Implementations§
Source§impl SerializableModel
impl SerializableModel
Sourcepub fn write_lexicon<W: Write>(&self, writer: &mut W) -> Result<()>
pub fn write_lexicon<W: Write>(&self, writer: &mut W) -> Result<()>
Write lexicon file with proper cost calculation
Sourcepub fn write_connection_costs<W: Write>(&self, writer: &mut W) -> Result<()>
pub fn write_connection_costs<W: Write>(&self, writer: &mut W) -> Result<()>
Write dense connection cost matrix (MeCab-compatible)
Sourcepub fn update_metadata_json<W: Write>(
&self,
base_metadata_path: &Path,
writer: &mut W,
) -> Result<()>
pub fn update_metadata_json<W: Write>( &self, base_metadata_path: &Path, writer: &mut W, ) -> Result<()>
Update metadata.json with trained model values.
The emitted model_info section deliberately carries no timestamp, so
exporting the same model twice produces byte-identical output (#981);
serde_json’s map is ordered, so key order is stable too.
§引数
base_metadata_path- Path of the basemetadata.jsonto update.writer- Write sink for the updated JSON.
Sourcepub fn write_unknown_dictionary<W: Write>(&self, writer: &mut W) -> Result<()>
pub fn write_unknown_dictionary<W: Write>(&self, writer: &mut W) -> Result<()>
Write unknown word definitions
Sourcepub fn write_char_def<W: Write>(&self, writer: &mut W) -> Result<()>
pub fn write_char_def<W: Write>(&self, writer: &mut W) -> Result<()>
Writes the character definition file (char.def) content preserved from training.
Sourcepub fn write_feature_def<W: Write>(&self, writer: &mut W) -> Result<()>
pub fn write_feature_def<W: Write>(&self, writer: &mut W) -> Result<()>
Writes the feature definition file (feature.def) content preserved from training.
Sourcepub fn write_rewrite_def<W: Write>(&self, writer: &mut W) -> Result<()>
pub fn write_rewrite_def<W: Write>(&self, writer: &mut W) -> Result<()>
Writes the rewrite rule definition file (rewrite.def) content preserved from training.
Trait Implementations§
Source§impl Archive for SerializableModel
impl Archive for SerializableModel
Source§const COPY_OPTIMIZATION: CopyOptimization<Self>
const COPY_OPTIMIZATION: CopyOptimization<Self>
serialize. Read moreSource§type Archived = ArchivedSerializableModel
type Archived = ArchivedSerializableModel
Source§type Resolver = SerializableModelResolver
type Resolver = SerializableModelResolver
Source§impl<'de> Deserialize<'de> for SerializableModel
impl<'de> Deserialize<'de> for SerializableModel
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<__D: Fallible + ?Sized> Deserialize<SerializableModel, __D> for Archived<SerializableModel>where
Vec<f64>: Archive,
<Vec<f64> as Archive>::Archived: Deserialize<Vec<f64>, __D>,
Vec<String>: Archive,
<Vec<String> as Archive>::Archived: Deserialize<Vec<String>, __D>,
ModelMetadata: Archive,
<ModelMetadata as Archive>::Archived: Deserialize<ModelMetadata, __D>,
BTreeMap<usize, BTreeMap<usize, f64>>: Archive,
<BTreeMap<usize, BTreeMap<usize, f64>> as Archive>::Archived: Deserialize<BTreeMap<usize, BTreeMap<usize, f64>>, __D>,
usize: Archive,
<usize as Archive>::Archived: Deserialize<usize, __D>,
Vec<FeatureSetInfo>: Archive,
<Vec<FeatureSetInfo> as Archive>::Archived: Deserialize<Vec<FeatureSetInfo>, __D>,
BTreeMap<String, String>: Archive,
<BTreeMap<String, String> as Archive>::Archived: Deserialize<BTreeMap<String, String>, __D>,
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
i32: Archive,
<i32 as Archive>::Archived: Deserialize<i32, __D>,
Vec<(u32, String)>: Archive,
<Vec<(u32, String)> as Archive>::Archived: Deserialize<Vec<(u32, String)>, __D>,
impl<__D: Fallible + ?Sized> Deserialize<SerializableModel, __D> for Archived<SerializableModel>where
Vec<f64>: Archive,
<Vec<f64> as Archive>::Archived: Deserialize<Vec<f64>, __D>,
Vec<String>: Archive,
<Vec<String> as Archive>::Archived: Deserialize<Vec<String>, __D>,
ModelMetadata: Archive,
<ModelMetadata as Archive>::Archived: Deserialize<ModelMetadata, __D>,
BTreeMap<usize, BTreeMap<usize, f64>>: Archive,
<BTreeMap<usize, BTreeMap<usize, f64>> as Archive>::Archived: Deserialize<BTreeMap<usize, BTreeMap<usize, f64>>, __D>,
usize: Archive,
<usize as Archive>::Archived: Deserialize<usize, __D>,
Vec<FeatureSetInfo>: Archive,
<Vec<FeatureSetInfo> as Archive>::Archived: Deserialize<Vec<FeatureSetInfo>, __D>,
BTreeMap<String, String>: Archive,
<BTreeMap<String, String> as Archive>::Archived: Deserialize<BTreeMap<String, String>, __D>,
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
i32: Archive,
<i32 as Archive>::Archived: Deserialize<i32, __D>,
Vec<(u32, String)>: Archive,
<Vec<(u32, String)> as Archive>::Archived: Deserialize<Vec<(u32, String)>, __D>,
Source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<SerializableModel, <__D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<SerializableModel, <__D as Fallible>::Error>
Source§impl Serialize for SerializableModel
impl Serialize for SerializableModel
Source§impl<__S: Fallible + ?Sized> Serialize<__S> for SerializableModelwhere
Vec<f64>: Serialize<__S>,
Vec<String>: Serialize<__S>,
ModelMetadata: Serialize<__S>,
BTreeMap<usize, BTreeMap<usize, f64>>: Serialize<__S>,
usize: Serialize<__S>,
Vec<FeatureSetInfo>: Serialize<__S>,
BTreeMap<String, String>: Serialize<__S>,
String: Serialize<__S>,
i32: Serialize<__S>,
Vec<(u32, String)>: Serialize<__S>,
impl<__S: Fallible + ?Sized> Serialize<__S> for SerializableModelwhere
Vec<f64>: Serialize<__S>,
Vec<String>: Serialize<__S>,
ModelMetadata: Serialize<__S>,
BTreeMap<usize, BTreeMap<usize, f64>>: Serialize<__S>,
usize: Serialize<__S>,
Vec<FeatureSetInfo>: Serialize<__S>,
BTreeMap<String, String>: Serialize<__S>,
String: Serialize<__S>,
i32: Serialize<__S>,
Vec<(u32, String)>: Serialize<__S>,
Auto Trait Implementations§
impl Freeze for SerializableModel
impl RefUnwindSafe for SerializableModel
impl Send for SerializableModel
impl Sync for SerializableModel
impl Unpin for SerializableModel
impl UnsafeUnpin for SerializableModel
impl UnwindSafe for SerializableModel
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive, it may be
unsized. Read moreSource§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.