exponenta event banner

docfun

Применение функции к словам в документах

Описание

пример

newDocuments = docfun(func,documents) вызывает функцию, заданную дескриптором функции func и пропускает элементы documents как строковый вектор слов.

  • Если func принимает ровно один входной аргумент, затем слова newDocuments(i) являются выходом func(string(documents(i))).

  • Если func принимает два входных аргумента, затем слова newDocuments(i) являются выходом func(string(documents(i)),details), где details содержит соответствующие сведения о маркере, выводимые tokenDetails.

  • Если func изменяет количество слов в документе, затем docfun удаляет сведения о маркере из этого документа.

docfun не выполняет вызовы функции func в определенном порядке.

пример

newDocuments = docfun(func,documents1,...,documentsN) вызывает функцию, заданную дескриптором функции func и пропускает элементы documents1,…,documentsN в виде строковых векторов слов, где N - количество входов в функцию func. Слова newDocuments(i) являются выходом func(string(documents1(i)),...,string(documentsN(i))).

Каждый из documents1,…,documentsN должен быть одинакового размера.

Примеры

свернуть все

Обратиться reverse каждому слову в массиве документов.

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

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

func = @reverse;
newDocuments = docfun(func,documents)
newDocuments = 
  2x1 tokenizedDocument:

    6 tokens: na elpmaxe fo a trohs ecnetnes
    4 tokens: a dnoces trohs ecnetnes

Тег слов путем объединения слов из одного массива документов с другим с помощью строковой функции plus.

Создать первый tokenizedDocument массив. Удалите пунктуацию и преобразуйте текст в нижний регистр.

str = [ ...
    "An example of a short sentence."
    "A second short sentence."];
str = erasePunctuation(str);
str = lower(str);
documents1 = tokenizedDocument(str)
documents1 = 
  2x1 tokenizedDocument:

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

Создать вторую tokenizedDocument массив. Документы имеют то же количество слов, что и соответствующие документы в documents1. Слова documents2 являются тегами POS для соответствующих слов.

documents2 = tokenizedDocument([ ...
    "_det _noun _prep _det _adj _noun"
    "_det _adj _adj _noun"])
documents2 = 
  2x1 tokenizedDocument:

    6 tokens: _det _noun _prep _det _adj _noun
    4 tokens: _det _adj _adj _noun

func = @plus;
newDocuments = docfun(func,documents1,documents2)
newDocuments = 
  2x1 tokenizedDocument:

    6 tokens: an_det example_noun of_prep a_det short_adj sentence_noun
    4 tokens: a_det second_adj short_adj sentence_noun

Вывод отличается от вызова plus непосредственно по документам.

plus(documents1,documents2)
ans = 
  2x1 tokenizedDocument:

    12 tokens: an example of a short sentence _det _noun _prep _det _adj _noun
     8 tokens: a second short sentence _det _adj _adj _noun

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

свернуть все

Дескриптор функции, который принимает N строковых массивов в качестве входных данных и выводит строковый массив. func должен принять string(documents1(i)),...,string(documentsN(i)) в качестве входных данных.

Дескриптор функции, применяемый к словам в документах. Функция должна иметь один из следующих синтаксисов:

  • newWords = func(words), где words - строковый массив слов одного документа.

  • newWords = func(words,details), где words является строковым массивом слов одного документа, и details - соответствующая таблица подробных данных маркера, tokenDetails.

  • newWords = func(words1,...,wordsN), где words1,...,wordsN являются строковыми массивами слов.

Пример: @reverse

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

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

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

свернуть все

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

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