API リファレンス
Suzume クラス
日本語トークン化のメインクラス。
Suzume.create(options?)
新しい Suzume インスタンスを作成します。
typescript
static async create(options?: SuzumeOptions & { wasmPath?: string }): Promise<Suzume>SuzumeOptions:
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
wasmPath | string | undefined | WASM ファイルのカスタムパス |
preserveVu | boolean | true | ヴを保持(ビ等に正規化しない) |
preserveCase | boolean | true | 大文字小文字を保持(ASCII を小文字化しない) |
preserveSymbols | boolean | false | 記号・絵文字を出力に保持 |
戻り値: Promise<Suzume>
例:
typescript
// 通常の使用
const suzume = await Suzume.create()
// カスタム WASM パス
const suzume = await Suzume.create({ wasmPath: '/path/to/suzume.wasm' })
// オプション指定
const suzume = await Suzume.create({
preserveSymbols: true,
preserveVu: false,
})analyze(text)
日本語テキストを解析し、トークンの配列を返します。
typescript
analyze(text: string): Morpheme[]| パラメータ | 型 | 説明 |
|---|---|---|
text | string | 解析する日本語テキスト |
戻り値: Morpheme[]
例:
typescript
const result = suzume.analyze('東京に行きました')
// 結果:
// [
// { surface: '東京', pos: 'NOUN', posJa: '名詞', ... },
// { surface: 'に', pos: 'PARTICLE', posJa: '助詞', ... },
// { surface: '行き', pos: 'VERB', posJa: '動詞', ... },
// { surface: 'まし', pos: 'AUX', posJa: '助動詞', ... },
// { surface: 'た', pos: 'AUX', posJa: '助動詞', ... }
// ]generateTags(text)
テキストから意味のあるタグ(名詞、固有名詞)を抽出します。検索インデックスや分類に便利です。
typescript
generateTags(text: string): string[]| パラメータ | 型 | 説明 |
|---|---|---|
text | string | タグを抽出する日本語テキスト |
戻り値: string[]
例:
typescript
const tags = suzume.generateTags('東京スカイツリーに行きました')
console.log(tags)
// ['東京', 'スカイツリー']loadUserDictionary(data)
実行時にカスタム単語を読み込みます。
typescript
loadUserDictionary(data: string): boolean| パラメータ | 型 | 説明 |
|---|---|---|
data | string | CSV 形式の辞書エントリ |
戻り値: boolean - 成功時 true
形式: 表層形,品詞[,コスト][,基本形]
例:
typescript
// 単一エントリ
suzume.loadUserDictionary('ChatGPT,NOUN')
// 複数エントリ
suzume.loadUserDictionary(`
ChatGPT,NOUN
スカイツリー,NOUN
DeepL,NOUN
`)version
Suzume のバージョン文字列を取得します。
typescript
get version(): string例:
typescript
console.log(suzume.version) // "0.1.0"destroy()
WASM メモリとリソースを解放します。インスタンスの使用が終わったら必ず呼び出してください。
typescript
destroy(): void例:
typescript
const suzume = await Suzume.create()
// ... suzume を使用 ...
suzume.destroy() // リソースを解放Morpheme インターフェース
単一のトークン(言語単位)を表します。
typescript
interface Morpheme {
surface: string // 表層形(テキスト中の表記)
pos: string // 品詞(英語)
baseForm: string // 基本形/辞書形
reading: string // 読み(カタカナ)
posJa: string // 品詞(日本語)
conjType: string | null // 活用型
conjForm: string | null // 活用形
}プロパティ
| プロパティ | 型 | 説明 | 例 |
|---|---|---|---|
surface | string | テキスト中の表層形 | "食べ" |
pos | string | 品詞(英語) | "VERB" |
baseForm | string | 辞書形/基本形 | "食べる" |
reading | string | カタカナ読み | "タベ" |
posJa | string | 品詞(日本語) | "動詞" |
conjType | string | null | 活用型(動詞/形容詞) | "一段" |
conjForm | string | null | 活用形 | "連用形" |
品詞一覧
pos | posJa | 説明 |
|---|---|---|
NOUN | 名詞 | 名詞 |
VERB | 動詞 | 動詞 |
ADJ | 形容詞 | 形容詞 |
ADV | 副詞 | 副詞 |
PARTICLE | 助詞 | 助詞 |
AUX | 助動詞 | 助動詞 |
PRON | 代名詞 | 代名詞 |
DET | 連体詞 | 連体詞 |
CONJ | 接続詞 | 接続詞 |
INTJ | 感動詞 | 感動詞 |
PREFIX | 接頭辞 | 接頭辞 |
SUFFIX | 接尾辞 | 接尾辞 |
SYMBOL | 記号 | 記号 |
OTHER | その他 | その他/不明 |
エラーハンドリング
typescript
try {
const suzume = await Suzume.create()
const result = suzume.analyze('テスト')
} catch (error) {
if (error.message === 'Failed to create Suzume instance') {
console.error('WASM の初期化に失敗しました')
}
}メモリ管理
Suzume は手動メモリ管理が必要な WebAssembly を使用します。使用後は必ず destroy() を呼び出してください:
typescript
// 良い例:使用後にクリーンアップ
const suzume = await Suzume.create()
try {
const result = suzume.analyze(text)
// 結果を処理...
} finally {
suzume.destroy()
}
// 長時間実行アプリ:インスタンスを再利用
class MyApp {
private suzume: Suzume | null = null
async init() {
this.suzume = await Suzume.create()
}
analyze(text: string) {
return this.suzume?.analyze(text) ?? []
}
dispose() {
this.suzume?.destroy()
this.suzume = null
}
}