tokenizedDocument

Массив токенизированных документов для анализа текста

Описание

Токенизированный документ является документом, представленным как набор слов (также известный как tokens), который используется для анализа текста.

Используйте токенизированные документы для:

  • Обнаружение сложных лексем в тексте, таких как веб-адреса, смайлики, эмодзи и хештеги.

  • Удалите слова, такие как стоповые слова, используя removeWords или removeStopWords функций.

  • Выполните задачи предварительной обработки на уровне слов, такие как стемминг или лемматизация, используя normalizeWords функция.

  • Анализируйте частоты слов и n-граммов с помощью bagOfWords и bagOfNgrams объекты.

  • Добавьте предложение и часть речи детали, используя addSentenceDetails и addPartOfSpeechDetails функций.

  • Добавить теги сущностей используя addEntityDetails функция.

  • Просмотрите подробности о лексемах используя tokenDetails функция.

Функция поддерживает английский, японский, немецкий и корейский текст. Чтобы узнать, как использовать tokenizedDocument для других языков см. «Языковые факторы».

Создание

Описание

documents = tokenizedDocument создает скаляр документ без лексем.

пример

documents = tokenizedDocument(str) токенизирует элементы массива строковых массивов и возвращает токенизированный массив документов.

пример

documents = tokenizedDocument(str,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение".

Входные параметры

расширить все

Вход текст, заданный как строковый массив, вектор символов, массив ячеек векторов символов или массив ячеек строковых массивов.

Если входной текст еще не был разделен на слова, то str должен быть строковыми массивами, вектором символов, массивом ячеек векторов символов или массивом ячеек из строковых скаляров.

Пример: ["an example of a short document";"a second short document"]

Пример: 'an example of a single document'

Пример: {'an example of a short document';'a second short document'}

Если входной текст уже был разделен на слова, задайте 'TokenizeMethod' чтобы быть 'none'. Если str содержит один документ, тогда это должен быть строковый вектор слов, массив ячеек строк из векторов символов или массив ячеек, содержащий один строковый вектор слов. Если str содержит несколько документов, тогда это должен быть массив ячеек из строковых массивов.

Пример: ["an" "example" "document"]

Пример: {'an','example','document'}

Пример: {["an" "example" "of" "a" "short" "document"]}

Пример: {["an" "example" "of" "a" "short" "document"];["a" "second" "short" "document"]}

Типы данных: string | char | cell

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'DetectPatterns',{'email-address','web-address'} обнаруживает адреса электронной почты и веб-адреса

Метод токенизации документов, заданный как разделенная разделенными запятой парами, состоящая из 'TokenizeMethod' и одно из следующих:

  • 'unicode' - Токенизация входного текста с помощью правил, основанных на Юникоде® Стандартное приложение № 29 [1] и токенизатор ICU [2]. Если str - массив ячеек, затем элементы str должны быть строковыми скалярами или векторами символов. Если 'Language' является 'en' или 'de', затем 'unicode' является значением по умолчанию.

  • 'mecab' - Токенизация текста на японском и корейском языках с помощью токенизатора MeCab [3]. Если 'Language' является 'ja' или 'ko', затем 'mecab' является значением по умолчанию.

  • mecabOptions объект - Токенизация японского и корейского текста с помощью опций MeCab, заданных mecabOptions объект.

  • 'none' - Не токенизируйте входной текст.

Если входной текст уже был разделен на слова, задайте 'TokenizeMethod' чтобы быть 'none'. Если str содержит один документ, тогда это должен быть строковый вектор слов, массив ячеек строк из векторов символов или массив ячеек, содержащий один строковый вектор слов. Если str содержит несколько документов, тогда это должен быть массив ячеек из строковых массивов.

Шаблоны сложных лексем для обнаружения, заданные как разделенная разделенными запятой парами, состоящая из 'DetectPatterns' и 'none', 'all'или строку или массив ячеек, содержащий одно или несколько из следующих.

  • 'email-address' - Обнаружение адресов электронной почты. Для примера обработки "user@domain.com" как одна лексема.

  • 'web-address' - Обнаружение веб-адресов. Для примера обработки "https://www.mathworks.com" как одна лексема.

  • 'hashtag' - Обнаружение хештегов. Для примера обработки "#MATLAB" как одна лексема.

  • 'at-mention' - Обнаружение упоминаний. Для примера обработки "@MathWorks" как одна лексема.

  • 'emoticon' - Обнаружение смайликов. Для примера обработки ":-D" как одна лексема.

Если DetectPatterns является 'none', тогда функция не обнаруживает сложных шаблонов токенов. Если DetectPatterns является 'all'затем функция обнаруживает все перечисленные сложные шаблоны токенов.

Пример: 'DetectPatterns','hashtag'

Пример: 'DetectPatterns',{'email-address','web-address'}

Типы данных: char | string | cell

Пользовательские лексемы для обнаружения, заданные как разделенная разделенными запятой парами, состоящая из 'CustomTokens' и одно из следующих.

  • Массив строковых массивов, вектора символов или ячеек векторов символов, содержащий пользовательские лексемы.

  • Таблица, содержащая пользовательские лексемы в столбце с именем Token и соответствующая лексема вводит столбец с именем Type.

Если вы задаете пользовательские лексемы как строковые массивы, вектор символов или массив ячеек векторов символов, то функция присваивает тип токена "custom". Чтобы задать пользовательский тип лексемы, используйте вход таблицы. Чтобы просмотреть типы лексем, используйте tokenDetails функция.

Пример: 'CustomTokens',["C++" "C#"]

Типы данных: char | string | table | cell

Регулярные выражения для обнаружения, заданные как разделенная разделенными запятой парами, состоящая из 'RegularExpressions' и одно из следующих.

  • Строковые массивы, вектор символов или массив ячеек из символьных векторов, содержащих регулярные выражения.

  • Таблица, содержащая регулярные выражения в столбце с именем Pattern и соответствующие типы лексем в столбце с именем Type.

Если вы задаете регулярные выражения как строковые массивы, вектор символов или массив ячеек векторов символов, то функция присваивает тип токена "custom". Чтобы задать пользовательский тип лексемы, используйте вход таблицы. Чтобы просмотреть типы лексем, используйте tokenDetails функция.

Пример: 'RegularExpressions',["ver:\d+" "rev:\d+"]

Типы данных: char | string | table | cell

Области верхнего уровня для обнаружения веб-адресов, заданные как разделенная разделенными запятой парами, состоящая из 'TopLevelDomains' и вектор символов, строковые массивы или массив ячеек из векторов символов. По умолчанию функция использует выход topLevelDomains.

Эта опция применяется только в том случае 'DetectPatterns' является 'all' или содержит 'web-address'.

Пример: 'TopLevelDomains',["com" "net" "org"]

Типы данных: char | string | cell

Язык, заданный как разделенная разделенными запятой парами, состоящая из 'Language' и одно из следующих.

  • 'en' - английский. Эта опция также устанавливает значение по умолчанию для 'TokenizeMethod' на 'unicode'.

  • 'ja' - японский. Эта опция также устанавливает значение по умолчанию для 'TokenizeMethod' на 'mecab'.

  • 'de' - немецкий. Эта опция также устанавливает значение по умолчанию для 'TokenizeMethod' на 'unicode'.

  • 'ko' - корейский. Эта опция также устанавливает значение по умолчанию для 'TokenizeMethod' на 'mecab'.

Если вы не задаете значение, то функция обнаруживает язык из входа текста, используя corpusLanguage функция.

Эта опция задает подробные сведения о языке лексем. Чтобы просмотреть подробные сведения о языке лексем, используйте tokenDetails. Эти детали языка определяют поведение removeStopWords, addPartOfSpeechDetails, normalizeWords, addSentenceDetails, и addEntityDetails функций на лексемах.

Дополнительные сведения о поддержке языка в Text Analytics Toolbox™ см. в разделе Языковые факторы.

Пример: 'Language','ja'

Свойства

расширить все

Уникальные слова в документах, заданные как строковые массивы. Слова не появляются в каком-либо конкретном порядке.

Типы данных: string

Функции объекта

расширить все

erasePunctuationУдалите пунктуацию из текста и документов
removeStopWordsУдалите стоповые слова из документов
removeWordsУдалите выбранные слова из документов или модели мешка слов
normalizeWordsОпределите корень или лемматизируйте слова
correctSpellingПравильное написание слов
replaceWordsЗаменить слова в документах
replaceNgramsЗамените n-граммы в документах
removeEmptyDocumentsУдалите пустые документы из токенизированного массива документов, модели мешка слов или модели мешка n-граммов
lowerПреобразование документов в строчные
upperПреобразование документов в заглавные
tokenDetailsДетали лексем в токенизированном массиве документов
addSentenceDetailsДобавьте номера предложений к документам
addPartOfSpeechDetailsДобавление тегов части речи к документам
addLanguageDetailsДобавление идентификаторов языков к документам
addTypeDetailsДобавление сведений о типах лексем в документы
addLemmaDetailsДобавьте лемма-формы лексем к документам
addEntityDetailsДобавление тегов сущностей к документам
writeTextDocumentЗапись документов в текстовый файл
doclengthДлина документов в массиве документов
contextПоиск документов по вхождениям слов или n-граммов в контексте
joinWordsПреобразование документов в строки путем соединения слов
doc2cellПреобразуйте документы в массив ячеек из строковых векторов
stringПреобразуйте скалярный документ в строковый вектор
plusДобавление документов
replaceЗамените подстроки в документах
docfunПрименить функцию к словам в документах
regexprepЗамените текст в словах документов с помощью регулярного выражения
wordcloudСоздайте график облака слов из текста, модели мешка слов, модели мешка n-граммов или модели LDA

Примеры

свернуть все

Создайте токенизированные документы из строковых массивов.

str = [
    "an example of a short sentence" 
    "a second short sentence"]
str = 2x1 string
    "an example of a short sentence"
    "a second short sentence"

documents = tokenizedDocument(str)
documents = 
  2x1 tokenizedDocument:

    6 tokens: an example of a short sentence
    4 tokens: a second short sentence

Создайте токенизированный документ из строкового str. По умолчанию функция обрабатывает хэштег "#MATLAB", смайлики ":-D"и веб-адрес "https://www.mathworks.com/help" как одиночные лексемы.

str = "Learn how to analyze text in #MATLAB! :-D see https://www.mathworks.com/help/";
document = tokenizedDocument(str)
document = 
  tokenizedDocument:

   11 tokens: Learn how to analyze text in #MATLAB ! :-D see https://www.mathworks.com/help/

Чтобы обнаружить только хэштеги как сложные лексемы, задайте 'DetectPatterns' опция, которая будет 'hashtag' только. Затем функция токенизирует смайлики ":-D" и веб-адрес "https://www.mathworks.com/help" в несколько лексемы.

document = tokenizedDocument(str,'DetectPatterns','hashtag')
document = 
  tokenizedDocument:

   24 tokens: Learn how to analyze text in #MATLAB ! : - D see https : / / www . mathworks . com / help /

Удалите стоповые слова из массива документов с помощью removeStopWords. The tokenizedDocument функция обнаруживает, что документы на английском языке, поэтому removeStopWords удаляет английские стоп-слова.

documents = tokenizedDocument([
    "an example of a short sentence" 
    "a second short sentence"]);
newDocuments = removeStopWords(documents)
newDocuments = 
  2x1 tokenizedDocument:

    3 tokens: example short sentence
    3 tokens: second short sentence

Стройте слова в массиве документов с помощью стеммера Портера.

documents = tokenizedDocument([
    "a strongly worded collection of words"
    "another collection of words"]);
newDocuments = normalizeWords(documents)
newDocuments = 
  2x1 tokenizedDocument:

    6 tokens: a strongli word collect of word
    4 tokens: anoth collect of word

The tokenizedDocument функция по умолчанию разделяет слова и лексемы, которые содержат символы. Например, функция разделяет «C++» и «C #» на несколько лексемы.

str = "I am experienced in MATLAB, C++, and C#.";
documents = tokenizedDocument(str)
documents = 
  tokenizedDocument:

   14 tokens: I am experienced in MATLAB , C + + , and C # .

Чтобы предотвратить разделение лексем, содержащих символы, задайте пользовательские лексемы с помощью 'CustomTokens' опция.

documents = tokenizedDocument(str,'CustomTokens',["C++" "C#"])
documents = 
  tokenizedDocument:

   11 tokens: I am experienced in MATLAB , C++ , and C# .

Пользовательские лексемы имеют тип "custom". Просмотрите сведения о лексеме. Столбец Type содержит типы лексем.

tdetails = tokenDetails(documents)
tdetails=11×5 table
        Token        DocumentNumber    LineNumber       Type        Language
    _____________    ______________    __________    ___________    ________

    "I"                    1               1         letters           en   
    "am"                   1               1         letters           en   
    "experienced"          1               1         letters           en   
    "in"                   1               1         letters           en   
    "MATLAB"               1               1         letters           en   
    ","                    1               1         punctuation       en   
    "C++"                  1               1         custom            en   
    ","                    1               1         punctuation       en   
    "and"                  1               1         letters           en   
    "C#"                   1               1         custom            en   
    "."                    1               1         punctuation       en   

Чтобы задать свои собственные типы лексем, введите пользовательские лексемы как таблицу с лексемами в столбце с именем Token, и типы в столбце с именем Type. Чтобы назначить пользовательский тип лексеме, который не включает символы, включите также в таблицу. Например, создайте таблицу, которая присвоит «MATLAB», «C++» и «C #» "programming-language" тип токена.

T = table;
T.Token = ["MATLAB" "C++" "C#"]';
T.Type = ["programming-language" "programming-language" "programming-language"]'
T=3×2 table
     Token               Type         
    ________    ______________________

    "MATLAB"    "programming-language"
    "C++"       "programming-language"
    "C#"        "programming-language"

Токенизируйте текст с помощью таблицы пользовательских лексем и просмотрите детали лексемы.

documents = tokenizedDocument(str,'CustomTokens',T);
tdetails = tokenDetails(documents)
tdetails=11×5 table
        Token        DocumentNumber    LineNumber            Type            Language
    _____________    ______________    __________    ____________________    ________

    "I"                    1               1         letters                    en   
    "am"                   1               1         letters                    en   
    "experienced"          1               1         letters                    en   
    "in"                   1               1         letters                    en   
    "MATLAB"               1               1         programming-language       en   
    ","                    1               1         punctuation                en   
    "C++"                  1               1         programming-language       en   
    ","                    1               1         punctuation                en   
    "and"                  1               1         letters                    en   
    "C#"                   1               1         programming-language       en   
    "."                    1               1         punctuation                en   

The tokenizedDocument функция по умолчанию разделяет слова и лексемы, содержащие символы. Например, функция разделяет текст "ver:2" в несколько лексемы.

str = "Upgraded to ver:2 rev:3.";
documents = tokenizedDocument(str)
documents = 
  tokenizedDocument:

   9 tokens: Upgraded to ver : 2 rev : 3 .

Чтобы предотвратить разделение лексем с определенными шаблонами, задайте эти шаблоны, используя 'RegularExpressions' опция.

Задайте регулярные выражения, чтобы обнаружить лексемы, обозначающие номера версий и ревизий: строки цифр, появляющиеся после "ver:" и "rev:" соответственно.

documents = tokenizedDocument(str,'RegularExpressions',["ver:\d+" "rev:\d+"])
documents = 
  tokenizedDocument:

   5 tokens: Upgraded to ver:2 rev:3 .

Пользовательские лексемы по умолчанию имеют тип "custom". Просмотрите сведения о лексеме. Столбец Type содержит типы лексем.

tdetails = tokenDetails(documents)
tdetails=5×5 table
      Token       DocumentNumber    LineNumber       Type        Language
    __________    ______________    __________    ___________    ________

    "Upgraded"          1               1         letters           en   
    "to"                1               1         letters           en   
    "ver:2"             1               1         custom            en   
    "rev:3"             1               1         custom            en   
    "."                 1               1         punctuation       en   

Чтобы задать свои собственные типы лексем, введите регулярные выражения как таблицу с регулярными выражениями в столбце с именем Pattern и типы лексем в столбце с именем Type.

T = table;
T.Pattern = ["ver:\d+" "rev:\d+"]';
T.Type = ["version" "revision"]'
T=2×2 table
     Pattern        Type   
    _________    __________

    "ver:\d+"    "version" 
    "rev:\d+"    "revision"

Токенизируйте текст с помощью таблицы пользовательских лексем и просмотрите детали лексемы.

documents = tokenizedDocument(str,'RegularExpressions',T);
tdetails = tokenDetails(documents)
tdetails=5×5 table
      Token       DocumentNumber    LineNumber       Type        Language
    __________    ______________    __________    ___________    ________

    "Upgraded"          1               1         letters           en   
    "to"                1               1         letters           en   
    "ver:2"             1               1         version           en   
    "rev:3"             1               1         revision          en   
    "."                 1               1         punctuation       en   

Загрузите данные примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит по одному сонету на линию со словами, разделенными пространством. Извлеките текст из sonnetsPreprocessed.txtразделите текст на документы в символах новой строки, а затем пометьте его токеном.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

Поиск слова «жизнь».

tbl = context(documents,"life");
head(tbl)
ans=8×3 table
                            Context                             Document    Word
    ________________________________________________________    ________    ____

    "consumst thy self single life ah thou issueless shalt "        9        10 
    "ainted counterfeit lines life life repair times pencil"       16        35 
    "d counterfeit lines life life repair times pencil pupi"       16        36 
    " heaven knows tomb hides life shows half parts write b"       17        14 
    "he eyes long lives gives life thee                    "       18        69 
    "tender embassy love thee life made four two alone sink"       45        23 
    "ves beauty though lovers life beauty shall black lines"       63        50 
    "s shorn away live second life second head ere beautys "       68        27 

Просмотрите вхождения в строковые массивы.

tbl.Context
ans = 23x1 string
    "consumst thy self single life ah thou issueless shalt "
    "ainted counterfeit lines life life repair times pencil"
    "d counterfeit lines life life repair times pencil pupi"
    " heaven knows tomb hides life shows half parts write b"
    "he eyes long lives gives life thee                    "
    "tender embassy love thee life made four two alone sink"
    "ves beauty though lovers life beauty shall black lines"
    "s shorn away live second life second head ere beautys "
    "e rehearse let love even life decay lest wise world lo"
    "st bail shall carry away life hath line interest memor"
    "art thou hast lost dregs life prey worms body dead cow"
    "           thoughts food life sweetseasond showers gro"
    "tten name hence immortal life shall though once gone w"
    " beauty mute others give life bring tomb lives life fa"
    "ve life bring tomb lives life fair eyes poets praise d"
    " steal thyself away term life thou art assured mine li"
    "fe thou art assured mine life longer thy love stay dep"
    " fear worst wrongs least life hath end better state be"
    "anst vex inconstant mind life thy revolt doth lie o ha"
    " fame faster time wastes life thou preventst scythe cr"
    "ess harmful deeds better life provide public means pub"
    "ate hate away threw savd life saying                  "
    " many nymphs vowd chaste life keep came tripping maide"

Токенизация японского текста с помощью tokenizedDocument. Функция автоматически обнаруживает японский текст.

str = [
    "恋に悩み、苦しむ。"
    "恋の悩みで苦しむ。"
    "空に星が輝き、瞬いている。"
    "空の星が輝きを増している。"];
documents = tokenizedDocument(str)
documents = 
  4x1 tokenizedDocument:

     6 tokens: 恋 に 悩み 、 苦しむ 。
     6 tokens: 恋 の 悩み で 苦しむ 。
    10 tokens: 空 に 星 が 輝き 、 瞬い て いる 。
    10 tokens: 空 の 星 が 輝き を 増し て いる 。

Токенизация текста на немецком языке с помощью tokenizedDocument. Функция автоматически обнаруживает немецкий текст.

str = [
    "Guten Morgen. Wie geht es dir?"
    "Heute wird ein guter Tag."];
documents = tokenizedDocument(str)
documents = 
  2x1 tokenizedDocument:

    8 tokens: Guten Morgen . Wie geht es dir ?
    6 tokens: Heute wird ein guter Tag .

Подробнее о

расширить все

Вопросы совместимости

расширить все

Поведение изменено в R2019b

Поведение изменено в R2018b

Поведение изменено в R2018b

Поведение изменено в R2018b

Ссылки

[1] Сегментация текста в кодировке Юникод. https://www.unicode.org/reports/tr29/

[2] Краевой анализ. http://userguide.icu-project.org/boundaryanalysis

[3] MeCab: еще одна часть речи и морфологический анализатор. https://taku910.github.io/mecab/

Введенный в R2017b