tokenizedDocument

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

Описание

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

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

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

  • Удалите слова, такие как слова остановки с помощью removeWords или removeStopWords функции.

  • Выполните задачи предварительной обработки уровня слова, такие как происхождение или lemmatization использование 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® Стандартное Приложение № 29 [1] и токенизатор ICU [2]. Если str массив ячеек, затем элементы str должны быть строковые скаляры или векторы символов. Если 'Language' 'en' or'de', затем 'unicode' значение по умолчанию.

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

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

  • 'none' – Не маркируйте входной текст.

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

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

  • '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. 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.

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] Текстовая Сегментация Unicode. https://www.unicode.org/reports/tr29/

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

Введенный в R2017b