Closed5

Android(Kotlin)でKuromojiにユーザー辞書を読み込ませたい

tez3998tez3998

今回の目標

前回、AndroidでKuromojiを動かした際に今日はかつ丼を食べたを入力として与えたところ、かつが接続詞として認識されてしまった。
そこで、今回はユーザー辞書を使うことで、かつ丼を名詞として認識させたい。

tez3998tez3998

ユーザー辞書に単語を登録

今回はKuromojiにかつ丼を名詞として認識させたいので、userdictionary.txtに以下のように書き込む。

かつ丼,かつ丼,カツドン,名詞

ユーザー辞書の形式は下記の記事を参考にした。
http://www.mwsoft.jp/programming/lucene/kuromoji.html

tez3998tez3998

ユーザー辞書と適応する

MainActivity.ktを以下のようにする。

package com.example.ktkuromojiipadic

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import com.atilika.kuromoji.ipadic.Tokenizer

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val inputText = "今日はかつ丼を食べた"

        // 変更点 開始
        val assetManager = resources.assets
        val file = assetManager.open("userdictionary.txt")
        val tokenizer = Tokenizer.Builder().userDictionary(file).build<Tokenizer>()
        // 変更点 終了

        val tokens = tokenizer.tokenize(inputText)
        val textView = findViewById<TextView>(R.id.text_view)

        var outputText = ""
        for (token in tokens) {
            outputText += token.surface + ":" + token.partOfSpeechLevel1 + "\n"
        }

        textView.text = outputText
    }
}

ビルドすると、以下のようにかつ丼が名詞として認識されたことが分かる。

このスクラップは2023/01/19にクローズされました