Создайте дополнительный словарь для исправления орфографических ошибок

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

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

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

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" не становятся обновленными правильно.

Создайте дополнительный словарь с именем knownWordsWithAffixes.dic файл, содержащий слова "normalizeWords" и "lemmatize". Для слова "lemmatize", также задайте, чтобы также включать допустимые аффиксы слова, "компенсируют" использование "/" символ.

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" не были изменены. Словарь по умолчанию содержит слово, "компенсируют", и также распознает слова "эквалайзер" и "компенсируемый" через "-r" и "-d" суффиксы, соответственно. Путем определения записи "lemmatize/equalize", программное обеспечение распознает, что слово "lemmatize", а также другие слова расширением аффиксов, соответствующих, "компенсирует". Например, слова "lemmatizer" и "lemmatized".

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

При использовании correctSpelling функция, функция может вывести нежелательные слова, даже если более желательное слово находится в словаре. Например, для входного слова "Decrese", correctSpelling функция может вывести слово "Decrees". Гарантировать, что определенные слова, чтобы не появиться в выходе, можно задать запрещенные слова в дополнительном словаре.

Например, создайте массив маркируемых документов и откорректируйте написание с помощью дополнительного словаря 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" и также, задает запрещенное слово "декрет" с помощью "*" символ. При определении запрещенных слов необходимо задать корневое слово. Например, чтобы предотвратить функцию от вывода множественное число "декреты", задайте корневое слово "декрет".

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" корректируется, чтобы "Уменьшиться".

Смотрите также

|

Похожие темы