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