Создайте словарь расширений для коррекции орфографии

В этом примере показано, как создать словарь расширений Hunspell для коррекции орфографии.

При использовании correctSpelling function, функция может обновить некоторые правильно написанные слова. Чтобы предоставить список известных слов, можно использовать опцию '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».

  • Вход слово «лемматизация» было изменяем на «легитимизация».

  • Вход слово «Аналитика» было изменяем на «Аналитик».

Чтобы создать словарь расширений Hunspell, содержащий список известных слов, создайте .dic файл, содержащий эти слова с одним словом на линию. Создайте словарь расширений с knownWords.dic имен файл, содержащий слова «MATLAB», «lemmatization» и «Analytics».

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 .

Задайте правила Affix

При указании нескольких слов с одним и тем же корневым словом (для примера, указании слов «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» обновляются неправильно.

Создайте словарь расширений с knownWordsWithAffixes.dic имен файл, содержащий слова «normalizeWords» и «lemmatize». Для слова «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 .

Заметьте, что варианты «лемматизации» не были изменены. Словарь по умолчанию содержит слово «equalize», а также распознает слова «equalizer» и «equalized» через суффиксы «-r» и «-d», соответственно. Путем определения записи «lemmatize/equalize» программное обеспечение распознает слово «lemmatize», а также другие слова путем расширения аффиксов, соответствующих «equalize». Для примера слова «лемматизер» и «лемматизирован».

Задайте запрещенные слова

При использовании correctSpelling функция может выводить нежелательные слова, даже если более желательное слово находится в словаре. Для примера, для входа слова «Decrese», correctSpelling функция может выводить слово «декреты». Чтобы убедиться, что определенные слова не отображаются в выходе, можно задать запрещенные слова в словаре расширений.

Например, создайте массив токенизированных документов и исправьте орфографию с помощью словаря расширений knownWords.dic. Обратите внимание, что этот словарь содержит слово «MATLAB».

str = [
    "Analyze text data using MATLAB."
    "Decrese the number of typos using an extension dictionary."];
documents = tokenizedDocument(str);
updatedDocuments = correctSpelling(documents,'ExtensionDictionary','knownWords.dic')
updatedDocuments = 
  2x1 tokenizedDocument:

     6 tokens: Analyze text data using MATLAB .
    10 tokens: Decrees the number of typos using an extension dictionary .

Несмотря на то, что слово «уменьшить» находится в словаре, функция все еще может выбирать другие слова как совпадающие. В этом случае функция выбирает слово «указы».

Создайте словарь расширений с knownWordsWithForbiddenWords.dic имен файл, содержащий слово «MATLAB», а также указать запрещенное слово «decree» с помощью "*" символ. При указании запрещенных слов необходимо указать корневое слово. Например, чтобы функция не опережала множественные «указы», укажите корневое слово «указ».

MATLAB
*decree

Исправьте написание документов с помощью словаря расширений knownWordsWithForbiddenWords.dic.

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

     6 tokens: Analyze text data using MATLAB .
    10 tokens: Decrease the number of typos using an extension dictionary .

Здесь слово «Decrese» исправляется на «Уменьшить».

См. также

|

Похожие темы