context

Поиск документов по вхождениям слов или n-граммов в контексте

Описание

пример

T = context(documents,word) ищет вхождения одного слова в documents и возвращает таблицу, показывающую word в контексте и его местоположении. Функция по умолчанию чувствительна к регистру.

пример

T = context(documents,ngram) ищет вхождения n-грамма в documents. Функция по умолчанию чувствительна к регистру.

пример

T = context(___,contextLength) задает длину контекста для возврата с помощью любого из предыдущих синтаксисов.

пример

T = context(___,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение" с использованием любого из предыдущих синтаксисов.

Примеры

свернуть все

Загрузите данные примера. Файл 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"

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

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

Ищите биграмму «даст ты».

ngram = ["dost" "thou"];
tbl = context(documents,ngram);
head(tbl)
ans=8×3 table
                               Context                               Document      Word  
    _____________________________________________________________    ________    ________

    "unthrifty loveliness why dost thou spend upon thy self thy "        4        4     5
    "ee beauteous niggard why dost thou abuse bounteous largess "        4       25    26
    "ve profitless usurer why dost thou great sum sums yet canst"        4       35    36
    "eavy eyelids weary night dost thou desire slumbers broken s"       61       10    11
    "            sweet lovely dost thou make shame like canker f"       95        3     4
    "hy budding name o sweets dost thou thy sins enclose tongue "       95       19    20
    "ruth beauty love depends dost thou therein dignified make a"      101       16    17
    "    thou blind fool love dost thou mine eyes behold know be"      137        5     6

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

tbl.Context
ans = 10x1 string
    "unthrifty loveliness why dost thou spend upon thy self thy "
    "ee beauteous niggard why dost thou abuse bounteous largess "
    "ve profitless usurer why dost thou great sum sums yet canst"
    "eavy eyelids weary night dost thou desire slumbers broken s"
    "            sweet lovely dost thou make shame like canker f"
    "hy budding name o sweets dost thou thy sins enclose tongue "
    "ruth beauty love depends dost thou therein dignified make a"
    "    thou blind fool love dost thou mine eyes behold know be"
    "h rebel powers array why dost thou pine suffer dearth paint"
    "y large cost short lease dost thou upon thy fading mansion "

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

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

Поиск слова «life» и возврат каждого вхождения с 15-символьным контекстом до и после.

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

    "hy self single life ah thou issuel"        9        10 
    "nterfeit lines life life repair ti"       16        35 
    "eit lines life life repair times p"       16        36 
    "ows tomb hides life shows half par"       17        14 
    "ng lives gives life thee          "       18        69 
    "assy love thee life made four two "       45        23 
    " though lovers life beauty shall b"       63        50 
    "ay live second life second head er"       68        27 

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

tbl.Context
ans = 23x1 string
    "hy self single life ah thou issuel"
    "nterfeit lines life life repair ti"
    "eit lines life life repair times p"
    "ows tomb hides life shows half par"
    "ng lives gives life thee          "
    "assy love thee life made four two "
    " though lovers life beauty shall b"
    "ay live second life second head er"
    " let love even life decay lest wis"
    "all carry away life hath line inte"
    "ast lost dregs life prey worms bod"
    " thoughts food life sweetseasond s"
    "hence immortal life shall though o"
    "te others give life bring tomb liv"
    "ing tomb lives life fair eyes poet"
    "self away term life thou art assur"
    "t assured mine life longer thy lov"
    "t wrongs least life hath end bette"
    "nconstant mind life thy revolt dot"
    "er time wastes life thou preventst"
    "l deeds better life provide public"
    "way threw savd life saying        "
    "hs vowd chaste life keep came trip"

Укажите исходный текст для отображения контекста.

Загрузите sonnets.txt данные и разделите их на отдельные документы.

txt = extractFileText("sonnets.txt");
paragraphs = split(txt,[newline newline]);

Извлеките сонеты из paragraphs. Первый сонет является пятым элементом абзацев, а остальные сонеты появляются в каждом втором элементе после.

sonnets = paragraphs(5:2:end);
documents = tokenizedDocument(sonnets);

Нормализуйте текст, затем выполните поиск по слову «жизнь».

documentsNormalized = normalizeWords(documents);
T = context(documentsNormalized,"life")
T=23×3 table
                            Context                             Document    Word
    ________________________________________________________    ________    ____

    "sum'st thy self in singl life ? ah ! if thou issueless"        9        18 
    " : so should the line of life that life repair , which"       16        73 
    "ld the line of life that life repair , which thi , tim"       16        75 
    "s a tomb which hide your life , and show not half your"       17        34 
    " live thi , and thi give life to thee .               "       18       128 
    "ssi of love to thee , my life , be made of four , with"       45        53 
    "eauti , though my lover' life : hi beauti shall in the"       63       100 
    " awai , to live a second life on second head ; er beau"       68        59 
    "t your love even with my life decai ; lest the wise wo"       71       118 
    "shall carri me awai , my life hath in thi line some in"       74        18 
    "ast but lost the dreg of life , the prei of worm , my "       74        83 
    "to my thought as food to life , or as sweet-season'd s"       75        10 
    "ur name from henc immort life shall have , though i , "       81        42 
    " , when other would give life , and bring a tomb . the"       83       108 
    "a tomb . there live more life in on of your fair ey th"       83       118 
    "yself awai , for term of life thou art assur mine ; an"       92        13 
      ⋮

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

T = context(documentsNormalized,"life",'Source',sonnets)
T=23×3 table
                            Context                             Document    Word
    ________________________________________________________    ________    ____

    "um'st thy self in single life? Ah! if thou issueless s"        9        18 
    ": So should the lines of life that life repair, Which "       16        73 
    "d the lines of life that life repair, Which this, Time"       16        75 
    " a tomb Which hides your life, and shows not half your"       17        34 
    "ves this, and this gives life to thee.                "       18       128 
    "assy of love to thee, My life, being made of four, wit"       45        53 
    "eauty, though my lover's life: His beauty shall in the"       63       100 
    "n away, To live a second life on second head; Ere beau"       68        59 
    "t your love even with my life decay; Lest the wise wor"       71       118 
    " shall carry me away, My life hath in this line some i"       74        18 
    "st but lost the dregs of life, The prey of worms, my b"       74        83 
    "o my thoughts as food to life, Or as sweet-season'd sh"       75        10 
    "name from hence immortal life shall have, Though I, on"       81        42 
    ", When others would give life, and bring a tomb. There"       83       108 
    "a tomb. There lives more life in one of your fair eyes"       83       118 
    "hyself away, For term of life thou art assured mine; A"       92        13 
      ⋮

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

свернуть все

Входные документы, заданные как tokenizedDocument массив.

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

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

N-грамм для поиска в контексте, заданный как строковые массивы или массивов ячеек из векторов символов.

ngram имеет размер 1-by- N , где N - количество слов в n-грамме. Значение ngram(j) является jвторое слово n-грамма.

Функция игнорирует конечные пустые строки в ngram.

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

Длина контекста, заданная как положительное целое число.

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

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

Пример: 'Solver','avb' задает, чтобы использовать в качестве решателя приблизительные вариационные Байеса.

Исходный текст, заданный как разделенная разделенными запятой парами, состоящая из 'Source' и строковые массивы или массив ячеек из векторов символов. Если входные документы предварительно обработаны и у вас есть исходный текст, можно использовать эту опцию, чтобы сделать выход более читаемым.

Исходный текст должен быть того же размера, что и documents.

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

  • false - поиск вхождений, которые точно соответствуют слову или n-грамму.

  • true - поиск вхождений, которые соответствуют слову или n-граммовому игнорирующему падежу.

Выходные аргументы

свернуть все

Таблица контекстов с этими столбцами:

ContextСтрока , содержащая запрашиваемое слово или n-грамм в контексте
DocumentЧисловой индекс документа, содержащего слово или n-грамм
WordЧисловые индексы слова или n-грамма в документе

Введенный в R2017b