Есть ли функция R для поиска ключевых слов на определенном «расстоянии до слова»?

Что мне нужно, так это функция для поиска слов в пределах определенного «расстояния до слова». Слова «сумка» и «инструмент» интересны в предложении «У него в машине была сумка с инструментами».

С помощью функции Quanteda kwic я могу найти «сумку» и «инструмент» по отдельности, но это часто приводит к перегрузке результатов. Мне нужно, например. «сумка» и «инструменты» в пределах пяти слов друг от друга.


person Willem Gooijaers    schedule 04.04.2019    source источник
comment
Посмотрите здесь   -  person CIAndrews    schedule 04.04.2019
comment
Имеет ли значение порядок «мешка» и «инструмента» в предложении или следует выбрать любой порядок?   -  person Roasty247    schedule 04.04.2019


Ответы (1)


Вы можете использовать функцию fcm() для подсчета совпадений в фиксированном окне, например, 5 слов. Это создает «матрицу совпадения функций» и может быть определена для любого размера диапазона токенов или для контекста всего документа.

Для вашего примера или, по крайней мере, примера, основанного на моей интерпретации ваших вопросов, это будет выглядеть так:

library("quanteda")
## Package version: 1.4.3
## Parallel computing: 2 of 12 threads used.
## See https://quanteda.io for tutorials and examples.

txt <- c(
  d1 = "He had a bag of tools in his car",
  d2 = "bag other other other other tools other"
)
fcm(txt, context = "window", window = 5)
## Feature co-occurrence matrix of: 10 by 10 features.
## 10 x 10 sparse Matrix of class "fcm"
##         features
## features He had a bag of tools in his car other
##    He     0   1 1   1  1     1  0   0   0     0
##    had    0   0 1   1  1     1  1   0   0     0
##    a      0   0 0   1  1     1  1   1   0     0
##    bag    0   0 0   0  1     2  1   1   1     4
##    of     0   0 0   0  0     1  1   1   1     0
##    tools  0   0 0   0  0     0  1   1   1     5
##    in     0   0 0   0  0     0  0   1   1     0
##    his    0   0 0   0  0     0  0   0   1     0
##    car    0   0 0   0  0     0  0   0   0     0
##    other  0   0 0   0  0     0  0   0   0    10

Здесь термин bag встречается один раз в пределах 5 токенов tool в первом документе. Во втором документе они разделены более чем на 5 токенов, поэтому это не считается.

person Ken Benoit    schedule 04.04.2019