exponenta event banner

tokenizedDocument

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

Описание

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

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

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

  • Удалить такие слова, как стоп-слова с помощью 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' - Маркировка входного текста с использованием правил, основанных на стандартном приложении Unicode ® No 29 [1] и токенизаторе ICU [2]. Еслиstr является массивом ячеек, то элементы str должны быть строковыми скалярами или векторами символов. Если 'Language' является 'en' или'de', то 'unicode' является значением по умолчанию.

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

  • mecabOptions object - токенизировать японский и корейский текст с помощью параметров 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 функции на маркерах.

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

Пример: '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Поиск в документах вхождений word или n-gram в контексте
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. 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

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

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

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   

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/

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

Представлен в R2017b