Массив маркируемых документов для текстового анализа
Маркируемый документ является документом, представленным как набор слов (также известный как tokens), который используется для текстового анализа.
Используйте маркируемые документы:
Обнаружьте комплексные лексемы в тексте, такие как веб-адреса, эмотиконы, эмодзи и хэш-теги.
Удалите слова, такие как слова остановки с помощью функций removeStopWords
или removeWords
.
Выполните задачи предварительной обработки уровня слова, такие как происхождение или lemmatization использование функции normalizeWords
.
Анализируйте слово и частоты n-граммы с помощью объектов bagOfNgrams
и bagOfWords
.
Добавьте предложение и детали части речи с помощью функций addPartOfSpeechDetails
и addSentenceDetails
.
Добавьте теги сущности с помощью функции addEntityDetails
.
Посмотрите детали о лексемах с помощью функции tokenDetails
.
Функция поддерживает английский, японский язык и немецкий текст. Чтобы изучить, как использовать tokenizedDocument
для других языков, смотрите Факторы Языка.
documents = tokenizedDocument
documents = tokenizedDocument(str)
documents = tokenizedDocument(str,Name,Value)
создает маркируемый документ скаляра без лексем.documents
= tokenizedDocument
маркирует элементы массива строк и возвращает маркируемый массив документа.documents
= tokenizedDocument(str
)
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".documents
= tokenizedDocument(str
,Name,Value
)
str
Введите текстВведите текст, заданный как массив строк, вектор символов, массив ячеек из символьных векторов или массив ячеек строковых массивов.
Если входной текст не был уже разделен в слова, то 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'DetectPatterns',{'email-address','web-address'}
обнаруживает адреса электронной почты и веб-адреса'TokenizeMethod'
— Метод, чтобы маркировать документы'unicode'
| 'mecab'
| 'none'
Метод, чтобы маркировать документы, заданные как пара, разделенная запятой, состоящая из 'TokenizeMethod'
и одно из следующего:
Текст входа 'unicode'
- Tokenize, использующий правила на основе Приложения № 29 [1] Стандарта Unicode® и токенизатора ICU [2]. Если str
является массивом ячеек, то элементы str
должны быть скалярами строки или векторами символов. Если 'Language'
является 'en'
or'de'
, то 'unicode'
является значением по умолчанию.
'mecab'
– Маркируйте японский текст с помощью токенизатора MeCab [3]. Если 'Language'
является 'ja'
, то 'mecab'
является значением по умолчанию.
'none'
Не маркируйте входной текст.
Если входной текст был уже разделен в слова, то задает 'TokenizeMethod'
, чтобы быть 'none'
. Если str
содержит единый документ, то это должен быть вектор строки слов, массив ячейки строки векторов символов или массив ячеек, содержащий один вектор строки слов. Если str
содержит несколько документов, то это должен быть массив ячеек строковых массивов.
'DetectPatterns'
— Шаблоны комплексных лексем, чтобы обнаружить'all'
(значение по умолчанию) | вектор символов | массив строк | массив ячеек из символьных векторовШаблоны комплексных лексем, чтобы обнаружить, заданный как пара, разделенная запятой, состоящая из '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'
— Пользовательские лексемы, чтобы обнаружить''
(значение по умолчанию) | массив строк | вектор символов | массив ячеек из символьных векторов | таблицаПользовательские лексемы, чтобы обнаружить, заданный как пара, разделенная запятой, состоящая из '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'
и вектора символов, массива строк или массива ячеек из символьных векторов. По умолчанию функция использует вывод topLevelDomains
.
Эта опция только применяется, если 'DetectPatterns'
является 'all'
или содержит 'web-address'
.
Пример: 'TopLevelDomains',["com" "net" "org"]
Типы данных: char
| string
| cell
'Language'
— Язык'en'
| 'ja'
| 'de'
Язык, заданный как пара, разделенная запятой, состоящая из 'Language'
и одно из следующих.
'en'
– Английский язык. Эта опция также устанавливает значение по умолчанию для 'TokenizeMethod'
к 'unicode'
.
'ja'
– Японский язык. Эта опция также устанавливает значение по умолчанию для 'TokenizeMethod'
к 'mecab'
.
'de'
– Немецкий язык. Эта опция также устанавливает значение по умолчанию для 'TokenizeMethod'
к 'unicode'
.
Если вы не задаете значение, то функция обнаруживает язык из входного текста с помощью функции corpusLanguage
.
Эта опция задает детали языка лексем. Чтобы посмотреть детали языка лексем, используйте tokenDetails
. Эти детали языка определяют поведение removeStopWords
, addPartOfSpeechDetails
, normalizeWords
, addSentenceDetails
и функций addEntityDetails
на лексемах.
Для получения дополнительной информации о поддержке языка в Text Analytics Toolbox™, смотрите Факторы Языка.
Пример: 'Language','ja'
Vocabulary
— Уникальные слова в документахУникальные слова в документах, заданных как массив строк. Слова не появляются ни в каком конкретном порядке.
Типы данных: string
erasePunctuation | Сотрите пунктуацию из текста и документов |
removeStopWords | Удалите слова остановки из документов |
removeWords | Удалите выбранные слова из модели сумки слов или документов |
normalizeWords | Происходите или lemmatize слова |
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 array
"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 array
"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 .
Функция tokenizedDocument
имеет встроенные правила для английского, японского языка и немецкого языка только. Для английского и немецкого текста метод токенизации 'unicode'
tokenizedDocument
обнаруживает лексемы, использующие правила на основе Приложения № 29 [1] Стандарта Unicode и токенизатора ICU [2], измененный, чтобы лучше обнаружить комплексные лексемы, такие как хэш-теги и URL. Для японского текста метод токенизации 'mecab'
обнаруживает лексемы, использующие правила на основе токенизатора MeCab [3].
Для других языков можно все еще попытаться использовать tokenizedDocument
. Если tokenizedDocument
не приводит к полезным результатам, то попытайтесь маркировать текст вручную. Чтобы создать массив tokenizedDocument
из вручную маркируемого текста, установите опцию 'TokenizeMethod'
на 'none'
.
Поведение изменяется в R2018b
Начиная в R2018b, tokenizedDocument
, по умолчанию, обнаруживает лексемы эмотикона. Это поведение облегчает анализировать текст, содержащий эмотиконы.
В R2017b и R2018a, tokenizedDocument
разделяет лексемы эмотикона в несколько лексем. Чтобы воспроизвести это поведение, в tokenizedDocument
, задают опцию 'DetectPatterns'
, чтобы быть {'email-address','web-address','hashtag','at-mention'}
.
Поведение изменяется в R2018b
Начиная в R2018b, tokenizedDocument
обнаруживает символы эмодзи, и функция tokenDetails
сообщает об этих лексемах с типом "emoji"
. Это облегчает анализировать текст, содержащий символы эмодзи.
В R2018a tokenDetails
сообщает о символах эмодзи с типом "other"
. Чтобы найти индексы лексем с типом "emoji"
или "other"
, используйте индексы idx = tdetails.Type == "emoji" | tdetails.Type == "other"
, где tdetails
является таблицей маркерных деталей.
Поведение изменяется в R2018b
Начиная в R2018b, tokenizedDocument
не разделяет в наклонной черте, наклонной черте влево или символах двоеточия, когда они появляются между двумя цифрами. Это поведение приводит к лучшим результатам при маркировании текста, содержащего даты и времена.
В предыдущих версиях tokenizedDocument
разделяет в этих символах. Чтобы воспроизвести поведение, маркируйте текст вручную или вставьте пробельные символы вокруг наклонной черты, наклонной черты влево и символов двоеточия перед использованием tokenizedDocument
.
[1] Текстовая сегментация Unicode. https://www.unicode.org/reports/tr29/
[2] Граничный анализ. http://userguide.icu-project.org/boundaryanalysis
[3] MeCab: еще одна часть речи и морфологический Анализатор. https://taku910.github.io/mecab/
addEntityDetails
| addPartOfSpeechDetails
| addSentenceDetails
| bagOfNgrams
| bagOfWords
| context
| joinwords
| normalizeWords
| removeEmptyDocuments
| removeStopWords
| removeWords
| replaceNgrams
| replaceWords
| tokenDetails
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.