Closed6

Android(Kotlin)でKuromoji IPADICを動かしたい

tez3998tez3998

初期設定

  • Empty Activityを選択
  • Minumum SDKは26に設定(app/build.gradle > android > defaultConfig > minSdkから後からでも変更可能)
tez3998tez3998

app/build.gradle > dependencies{}の中に以下を記載。

implementation("com.atilika.kuromoji:kuromoji-ipadic:0.9.0")

Sync Nowで変更を適応。

tez3998tez3998

ビルドすると、下記のエラーが発生。

2 files found with path 'META-INF/CONTRIBUTORS.md'.
Adding a packagingOptions block may help, please refer to
https://developer.android.com/reference/tools/gradle-api/7.4/com/android/build/api/dsl/ResourcesPackagingOptions
for more information

下記の記事を参考にする。
https://stackoverflow.com/questions/44342455/more-than-one-file-was-found-with-os-independent-path-meta-inf-license/47509465#47509465

app/build.gradleのandroid{}の中に、下記を記載。

packagingOptions {
    resources.excludes.add("META-INF/*")
}

Sync Nowで変更を適応。
ビルドすると、今回は成功する。

tez3998tez3998

形態素解析した結果を表示できるように、activity_main.xmlにデフォルトであるTextViewにIDを下記のように設定。

android:id="@+id/text_view"

次にアプリを起動すれば、形態素解析した結果が表示されるように、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 tokenizer = 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
    }
}
tez3998tez3998

ビルドすると、次のような形態素解析した結果が得られる。
「かつ」の品詞が間違っているが、これでKuromojiをAndroidで動かすことができた。

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