사용자 도구

사이트 도구


android:텍스트문장비교하기
텍스트문장비교하기

문서의 이전 판입니다!


목적

안드로이드 앱 내에서 Speech-to-text로 만든 문장을 제시어와 비교하려고 한다.

다음과 같이 문장 중 특정 단어가 잘못되었음을 나타내려고 하는 것이다.

java text diff

글자수로 비교하기

가장 쉽게 생각할 수 있는 것은 문장을 글자로 분해한 후, 그 글자를 하나하나 비교하는 것이다.

다음과 같이 짤 수 있을 것이다.

"compareText.kt"
// 비교하기 : 제시어와 답변 스피치를 비교한다.
fun compareText(quote : String, speechText : String) : AnswerTexts
{
    val quoteLength = quote.length
    val speechTextLength = speechText.length
 
    val maxLength = if (quoteLength >= speechTextLength) quoteLength else speechTextLength
    val minLength = if (quoteLength <= speechTextLength) quoteLength else speechTextLength
 
    var correctScore = 0
 
    // 정답확인용 배열을 만드는 것이다.
    val textArray = ArrayList<AnswerText>(maxLength)
 
 
    // 제시어와 답변 문장 중에서 길이가 긴 문장의 길이에 맞추어서 정답확인용 배열을 초기화한다.
    for (i in 0 until maxLength)
    {
        textArray.add(AnswerText())  // TextModel.kt 파일에 초기화를 한  data class가 있다.
    }
 
    // 정답확인용 배열에 답변 문장을 한 글자씩 입력한다. 그리고 그 답변 문장이 제시어와 차이가 있는지를 저장한다.
    for (i in 0 until minLength) {
 
        textArray[i].text = speechText[i]
        textArray[i].index = i
        if (quote[i] == speechText[i])
        {
            textArray[i].correctness = true
            correctScore++
        }else
        {
            textArray[i].correctness = false
        }
    }
 
    val answerTexts : AnswerTexts =
        AnswerTexts(textArray, correctScore, correctScore.toFloat() / maxLength)
 
    return answerTexts
 
}
 
// 스피치 대답 구조
data class AnswerText(
    var text : Char = '_',
    var correctness : Boolean = false,
    var index : Int = 0
)
 
// 정답 반환 구조체
data class AnswerTexts(
    var answerText : ArrayList<AnswerText>,
    var simpleScore : Int = 0,
    var percentageScore : Float = 0.0f
)
로그인하면 댓글을 남길 수 있습니다.

android/텍스트문장비교하기.1746203255.txt.gz · 마지막으로 수정됨: 2025/05/03 01:27 저자 이거니맨