Skip to content

Migration Guide v0.7

phenylshima edited this page Feb 7, 2024 · 1 revision

(English follows)

v0.7 マイグレーションガイド

v0.6からv0.7までで, いくつかの破壊的変更が行われています.

#222

  • WordDictionaryConfigを削除しました(DefaultFetcherに名前を変更し,機能も大きく変わっています)
  • DictionaryStoreトレイトのserlializer_hint関数を削除しました
  • JPreprocessに型変数Fを追加しました
  • 非推奨となっていたJPreprocess::new関数を削除しました

#219

  • jpcommonの出力インターフェースをVec<String>からVec<jlabel::Label>に変更しました

型変数Fの追加

今回,JPreprocessに型変数Fが追加されています. Fは,DictionaryFetcherを実装する構造体を受け付けます.

v0.7に移行するには,FDefaultFetcherを指定してください.

struct TextProcessor{
-  jpreprocess: jpreprocess::JPreprocess,
+  jpreprocess: jpreprocess::JPreprocess<jpreprocess::DefaultFetcher>,
  // ...
}

v0.6以前JPreprocessで使えるDictionaryFetcherWordDictionaryConfigだったため, Fに指定するのはDefaultFetcherでよいはずです.

Vec<jlabel::Label>

jpcommonの出力インターフェースがVec<String>からVec<jlabel::Label>に変更されています. JPreprocess::make_labelJPreprocess::extract_fullcontextnjdnodes_to_featuresが影響を受けます.

上流でjlabelを使わない場合は,次のようなコードで対応してください.

let fullcontext_label = jpreprocess.extract_fullcontext(&text)?;
let string_labels: Vec<_> = fullcontext_label.iter().map(ToString::to_string).collect();

v0.7 Migration Guide

From v0.6 to v0.7, several breaking changes have been made.

#222

  • WordDictionaryConfig was removed (in other words: renamed to DefaultFetcher and heavily modified)
  • DictionaryStore no longer has serlializer_hint function
  • JPreprocess struct requires type parameter F
  • JPreprocess's deprecated new function is finally removed

#219

  • Changed jpcommon output interface from Vec<String> to Vec<jlabel::Label>.

Added F type variable

The type variable F has been added to JPreprocess. Faccepts a struct that implementsDictionaryFetcher`.

To migrate to v0.7, specify DefaultFetcher for F.

struct TextProcessor{
-  jpreprocess: jpreprocess::JPreprocess,
+  jpreprocess: jpreprocess::JPreprocess<jpreprocess::DefaultFetcher>,
  // ...
}

Prior to v0.6, the DictionaryFetcher available for use with JPreprocess was WordDictionaryConfig, so DefaultFetcher should simply be the one specified for F.

Vec<jlabel::Label>

The output interface of jpcommon is changed from Vec<String> to Vec<jlabel::Label>. JPreprocess::make_label, JPreprocess::extract_fullcontext and njdnodes_to_features are affected.

If you do not use jlabel upstream, use the following code.

let fullcontext_label = jpreprocess.extract_fullcontext(&text)?;
let string_labels: Vec<_> = fullcontext_label.iter().map(ToString::to_string).collect();