Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

철자 교정을 위한 확장 사전 만들기

이 예제에서는 철자 교정을 위한 Hunspell 확장 사전을 만드는 방법을 보여줍니다.

correctSpelling 함수를 사용하면 이 함수로 철자가 올바른 단어를 업데이트할 수 있습니다. 알려진 단어의 목록을 제공하려면 알려진 단어로 구성된 string형 배열에 'KnownWords' 옵션을 사용합니다. 또는 알려진 단어와 금지어, 접사 규칙이 적용된 단어의 목록을 지정하는 Hunspell 확장 사전(개인 사전)을 지정할 수도 있습니다.

알려진 단어 지정하기

토큰화된 문서로 구성된 배열을 만듭니다.

str = [
    "Use MATLAB to correct spelling of words."
    "Correctly spelled worrds are important for lemmatizing."
    "Text Analytics Toolbox providesfunctions for spelling correction."];
documents = tokenizedDocument(str);

correctSpelling 함수를 사용하여 문서 철자를 교정합니다.

updatedDocuments = correctSpelling(documents)
updatedDocuments = 
  3x1 tokenizedDocument:

    9 tokens: Use MAT LAB to correct spelling of words .
    8 tokens: Correctly spelled words are important for legitimatizing .
    9 tokens: Text Analytic Toolbox provides functions for spelling correction .

이 함수는 단어 "worrds"와 "providesfunctions"의 철자를 교정했습니다. 하지만 다음과 같이 철자가 올바른 단어도 일부 수정했습니다.

  • 입력 단어 "MATLAB"이 두 단어 "MAT"와 "LAB"으로 분할되었습니다.

  • 입력 단어 "lemmatizing"이 "legitimatizing"으로 변경되었습니다.

  • 입력 단어 "Analytics"가 "Analytic"으로 변경되었습니다.

알려진 단어 목록이 포함된 Hunspell 확장 사전을 만들려면, 해당 단어들이 한 줄에 하나씩 포함되어 있는 .dic 파일을 만듭니다. 단어 "MATLAB", "lemmatization", "Analytics"가 포함된 확장 사전 knownWords.dic 파일을 만듭니다.

MATLAB
Analytics
lemmatizing

문서에서 다시 철자 교정을 수행하고 확장 사전 knownWords.dic를 지정합니다.

updatedDocuments = correctSpelling(documents,'ExtensionDictionary','knownWords.dic')
updatedDocuments = 
  3x1 tokenizedDocument:

    8 tokens: Use MATLAB to correct spelling of words .
    8 tokens: Correctly spelled words are important for lemmatizing .
    9 tokens: Text Analytics Toolbox provides functions for spelling correction .

접사 규칙 지정하기

예를 들어 "lemmatize", "lemmatizer", "lemmatized"처럼 동일한 원형을 갖는 단어를 여러 개 지정할 때 접사 규칙으로 나타내는 것이 더 쉬울 수 있습니다. 동일한 단어를 여러 다른 접사를 사용하여 여러 번 지정하는 대신, 접사 규칙을 상속하는 특정 단어를 지정할 수 있습니다.

예를 들어 토큰화된 문서로 구성된 배열을 만들고 correctSpelling 함수를 사용합니다.

str = [
    "A lemmatizer reduces words to their dictionary forms."
    "To lemmatize words, use the normalizeWords function."
    "Before lemmatizing, add part of speech details to the text."
    "Display lemmatized words in a word cloud."];
documents = tokenizedDocument(str);
updatedDocuments = correctSpelling(documents)
updatedDocuments = 
  4x1 tokenizedDocument:

     9 tokens: A legitimatize reduces words to their dictionary forms .
    10 tokens: To legitimatize words , use the normalize Words function .
    12 tokens: Before legitimatizing , add part of speech details to the text .
     8 tokens: Display legitimatized words in a word cloud .

단어 "normalizeWords"와 "lemmatize"의 변형이 올바르게 업데이트되지 않았음을 알 수 있습니다.

단어 "normalizeWords"와 "lemmatize"가 포함된 확장 사전 knownWordsWithAffixes.dic 파일을 만듭니다. 단어 "lemmatize"의 경우 "/" 기호를 사용하여 단어 "equalize"의 유효한 접사도 포함하도록 지정합니다.

normalizeWords
lemmatize/equalize

문서에서 다시 철자 교정을 수행하고 확장 사전 knownWordsWithAffixes.dic를 지정합니다.

updatedDocuments = correctSpelling(documents,'ExtensionDictionary','knownWordsWithAffixes.dic')
updatedDocuments = 
  4x1 tokenizedDocument:

     9 tokens: A lemmatizer reduces words to their dictionary forms .
     9 tokens: To lemmatize words , use the normalizeWords function .
    12 tokens: Before lemmatizing , add part of speech details to the text .
     8 tokens: Display lemmatized words in a word cloud .

"lemmatize"의 변형이 바뀌지 않았음을 알 수 있습니다. 디폴트 사전은 단어 "equalize"를 포함하고 있으며, 접미사 "-r"과 "-d"를 통해 단어 "equalizer"와 "equalized"를 각각 인식합니다. 항목 "lemmatize/equalize"를 지정하면 단어 "lemmatize"를 인식할 뿐 아니라, "equalize"에 해당되는 접사를 다른 단어에도 확장 적용하여 인식할 수 있습니다. 예를 들어 단어 "lemmatizer"와 "lemmatized"를 인식합니다.

금지어 지정하기

correctSpelling 함수를 사용할 때 이 함수는 사전에 더 적합한 단어가 있는 경우에도 부적합한 단어를 출력할 수 있습니다. 예를 들어 입력 단어 "MALTAB"에 대해 correctSpelling 함수는 단어 "MALT AB" 또는 단어 "MALTA"를 출력할 수 있습니다. 특정 단어가 출력값에 나타나지 않도록 하기 위해 확장 사전에 금지어를 지정할 수 있습니다.

예를 들어 토큰화된 문서로 구성된 배열을 만들고 확장 사전 knownWords.dic를 사용하여 철자를 교정해 보겠습니다. 이 사전에는 단어 "MATLAB"이 들어 있습니다.

str = [
    "Analyze text data using MATLAB."
    "Use MALTAB for text analysis."];
documents = tokenizedDocument(str);
updatedDocuments = correctSpelling(documents,'ExtensionDictionary','knownWords.dic')
updatedDocuments = 
  2x1 tokenizedDocument:

    6 tokens: Analyze text data using MATLAB .
    7 tokens: Use MALT AB for text analysis .

단어 "MATLAB"이 사전 또는 확장 사전에 있음에도, "MATLAB"과 비슷하지만 철자가 잘못된 단어에 대한 일치 항목으로 여전히 다른 단어가 선택될 수 있습니다.

단어 "MATLAB"이 포함된 확장 사전 knownWordsWithForbiddenWords.dic 파일을 만들고, "*" 기호를 사용하여 금지어 "malt"와 "Malta"도 지정합니다.

MATLAB
*malt
*Malta

확장 사전 knownWordsWithForbiddenWords.dic를 사용하여 철자를 교정합니다.

updatedDocuments = correctSpelling(documents,'ExtensionDictionary','knownWordsWithForbiddenWords.dic')
updatedDocuments = 
  2x1 tokenizedDocument:

    6 tokens: Analyze text data using MATLAB .
    6 tokens: Use MATLAB for text analysis .

여기서는 단어 "MALTAB"이 "MATLAB"으로 교정되었습니다.

참고 항목

|

관련 항목